关于发动机重力的问题,我如何将重心移动到屏幕中心?
它就像这个游戏https://github.com/postgres/postgres/tree/master/contrib/btree_gist
我不会分享我的代码的一部分因为我刚刚开始并且我已经添加了physicBox2D。我想知道阅读的逻辑,请帮助我...
答案 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