如何在 libgdx/box2d 中获取我的对象的向上向量?

How to get the up vector of my object in libgdx/box2d?

我正在使用下面的代码旋转我的物体(飞船)以面对一个目标。

playerBody.setTransform(playerBody.getPosition(), MathUtils.lerpAngle(playerBody.getAngle(), getDesiredAngle(),lerpProgress));

我想将船向船的方向移动。我认为检索船的向上矢量就足够了。我尝试了以下代码,但没有用。

            Vector2 direction = playerBody.getWorldPoint(new Vector2(0,1));
        playerBody.setLinearVelocity(direction.nor());

我相信 getWorldPoint() 不会给您想要的东西。它 returns 局部点的矢量(方向 + 距离),关于 box2D 世界的原点 。在这张图片中,这将是蓝色矢量:getWorldPoint()。你要的是红色矢量图

最基本的做法是这样的:

float angle = playerBody.getAngle();
Vector2 direction = new Vector2(MathUtils.cos(angle),MathUtils.sin(angle)) 

我必须补充一点,在我的例子中,我必须添加 90°,因为我需要一个 0° 的角度来对应一个垂直的物体:angle = playerBody.getAngle() + MathUtils.PI/2f