引擎如何重心

问题描述 投票:0回答:1

如何将 AndEngine 中的重力重新定位到屏幕中心?

虽然我处于早期阶段并且尚未包含我的代码片段(因为我刚刚开始并添加了PhysicsBox2D),但我对实现此效果的底层逻辑感到好奇。感谢您花时间阅读,并且感谢您提供的任何帮助。

box2d andengine physics gravity
1个回答
2
投票

在 box2d 中,没有选项可以将重力设置为某个直接点,您可以将某个向量设置为重力,这样重力本身就与某个方向有关。

虽然你可以通过

来模拟这个
  • 将世界重力设置为 (0,0)

    World world = new World(new Vector2(0,0), true);
    
  • 在每次渲染(游戏主循环迭代)中对物体(或通过迭代所有物体)施加等于重力的力。将重心设置为某个centerBody的示例:

    Body body, centerBody;
    
    ...
    
    //in render method
    float G = 1; //modifier of gravity value - you can make it bigger to have stronger gravity
    
    float distance = body.getPosition().dst( centerBody.getPosition() ); 
    float forceValue = G / (distance * distance);
    
    Vector2 direction = centerBody.getPosition().sub( body.getPosition() ) );
    
    body.applyForce( direction.mul( forceValue ), body.getWorldCenter() ); //the mul method is the same that scl in Libgdx I guess
    

如果您不想将重力应用于某些 centerBody 而是直接点,只需设置

new Vector2(0,0)
而不是
centerBody.getPosition

© www.soinside.com 2019 - 2024. All rights reserved.