如何在 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
我正在使用下面的代码旋转我的物体(飞船)以面对一个目标。
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