在box2d中围绕某个点旋转运动物体?

时间:2013-09-18 14:04:42

标签: box2d andengine

有没有办法在不使用body.setTransform()方法的情况下围绕与身体中心不同的点旋转运动物体?因为当我使用setTransform()时,物理行为变得奇怪。我用的是andengine。

2 个答案:

答案 0 :(得分:1)

它旋转的点是否会改变?如果不是,您可以从身体中心偏移身体的形状。然后当身体旋转时,它将围绕该点旋转。

另一个想法是使用关节。(*在下面指出)

答案 1 :(得分:0)

您可以使用方程来表示圆的x和y坐标。如果您使用下面的示例代码,则场景中的每次触摸都会导致角度减少0.1,这将导致身体绕点旋转( xCenter yCenter ),半径为 r

private float p2m = PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT;

@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {

    angle -= 0.1;

    Vector2 vector = Vector2Pool.obtain(xCenter/p2m + (r/p2m) * Math.cos(angle), (yCenter/p2m + (r/p2m) * Math.sin(angle));
    body.setTransform(vector, angle);
    Vector2Pool.recycle(vector);
    return false;
}