如何使用box2d使重力以Libgdx为中心

时间:2015-10-28 01:10:48

标签: android libgdx box2d gravity

如何将重力设置到任何身体或屏幕中心?我想知道这是逻辑......

我有两个圆体aBody是staticBody,bBody是动态的和世界gravity(0,0)

I wanna like this image

1 个答案:

答案 0 :(得分:2)

你要做的就是施加一个用屏幕中心模拟重力的力(让我们想象一下,在中心有非常非常重的物体会拉动其他物体)。

这个等式众所周知且易于实现 - look here to read about it

有了等式,你只需要实现它:

Body body, centerBody;
Vector2 center = new Vector2(0, 0);
...

//in render method
float G = 1; //modifier of gravity value - you can make it bigger to have stronger gravity

float distance = body.getPosition().dst( center ); 
float forceValue = G / (distance * distance);

Vector2 direction = center.sub( body.getPosition() ) );

body.applyForce( direction.scl( forceValue ), body.getWorldCenter() );

当然你可以修改重力中心"修改中心 Vector2。