2017-01-27 12 views
1

私はオブジェクト(船)を下のコードでターゲットに向かって回転させています。libgdx/box2dで私のオブジェクトのアップベクトルを取得するには?

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

私は船が見ている方向に船を移動することにしたいです。私は、船のアップベクトルを取得することで十分だろうと思った。私は以下のコードを試したが、うまくいかなかった。

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

答えて

0

私はgetWorldPoint()があなたの探しているものを提供しないと信じています。 box2D世界の起点に関して、ローカルポイントのベクトル(方向+距離)を返します。この写真では、これは青のベクトル:getWorldPoint()となります。あなたが望むのは赤いベクトルです。

行うための最も基本的な方法は、このようなものになるだろう:

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

私は私がに対応するように、0°の角度を必要とするので、私の場合、私は、90°を追加しなければならなかったことを追加する必要があります縦型:angle = playerBody.getAngle() + MathUtils.PI/2f

関連する問題