2016-08-17 11 views
0

私は、プレイヤーがポイント(惑星のような)を中心に回転するゲーム世界を持っています。どのようにして中心点の周りで物体を回転させることができますか?私は何とか動くもののためのアクタークラスの補間のようなものを何とか使うことができるようにしたいと思います、それは可能でしょうか?ありがとう!中心点を中心に体を回す

答えて

2

vector2をeasly経由で回転できます。

Vector2 vectorbody = new Vector2(50f, 50f); 
Vector2 vectorcenter = new Vector2(100f,100f); 
Vector2 vectordis= vectorbody.cpy().sub(vectorcenter);//Displacement vector center to body 
vectordis.setAngle(vectordis.angle() + rotatespeed);//Rotate speed can be negative that means it will rotates to other side. 
vectordis.add(vectorcenter); //vectordis now became rotated vectorbody 
vectorbody.set(vectordis); //vectorbody updated 

アクターメソッドを使用することもできます。

is_in_orbitのような新しい変数を定義し、その真の(軌道上の)場合は、それ以外の場合はアクタークラスの補間方法で移動します。

ニュートンの万有引力の法則も物理学であるため、物理学を使うという意見もありますが、それは複雑になり、より多くの中心点(あなたの言ったような惑星)が現れると予期せぬ結果を招く可能性があります。

+0

私はアクタークラスを使用することができますが、私も衝突としてbox2dを使いたいと思っていました。私はまだ何かに混乱している、私は実際にどのように体を回転させるのですか?私は、あなたが角度を得るためにベクトルを使用しているのを見て、どのように私はその角度に体を設定するのですか? – Wyatt

+0

私は実際にポジションを得ました。 vectorbody.xおよびvectorbody.yは本文の新しい座標です。 ボディの位置はbodyDef.position.set(vectorbody.x、vectorbody.y)で設定できます。 –

+0

私はあなたを見落としたと思います。私は体が体の回転ではなく中心を回転するときの位置について話していました。 body.setTransform(body.getPosition()、angle)について調べることができます。 –

関連する問題