Andengine如何重心

时间:2015-10-06 19:54:52

标签: box2d andengine physics gravity

关于发动机重力的问题,我如何将重心移动到屏幕中心?

它就像这个游戏https://github.com/postgres/postgres/tree/master/contrib/btree_gist

我不会分享我的代码的一部分因为我刚刚开始并且我已经添加了physicBox2D。我想知道阅读的逻辑,请帮助我...

1 个答案:

答案 0 :(得分:1)

在box2d中,没有选项可以将重力设置为某个直接点,你可以将引力作为引力进行分配,这样引力本身就是某个方向。

虽然你可以通过

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

    World world = new World(new Vector2(0,0), true);
    
  • 在每个渲染(游戏主循环迭代)等于Gravitation的情况下对身体(或通过遍历它们的所有身体)施加力。将重心设置到某个中心的例子:

    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