2016-08-11 8 views
0

1つの原点を周回する4つのスプライトが必要です。私はこのlibgdxのスプライトに円運動を適用する方法

 sprite_p1_avatar = new Sprite(dummyText); 
     sprite_p1_avatar.setPosition(200, 200); 
     sprite_p1_avatar.setOrigin(100, 100); 

     sprite_p2_avatar = new Sprite(dummyText); 
     sprite_p2_avatar.setPosition(300, 300); 
     sprite_p2_avatar.setOrigin(100, 100); 

     sprite_p3_avatar = new Sprite(dummyText); 
     sprite_p3_avatar.setPosition(400, 400); 
     sprite_p3_avatar.setOrigin(100, 100); 

     sprite_p4_avatar = new Sprite(dummyText); 
     sprite_p4_avatar.setPosition(500, 500); 
     sprite_p4_avatar.setOrigin(100, 100); 

     sprite_p1_avatar.rotate(40 * delta); 

     sprite_p1_avatar.draw(batch); 

     sprite_p2_avatar.rotate(40 * delta); 
     sprite_p2_avatar.draw(batch); 

     sprite_p3_avatar.rotate(40 * delta); 
     sprite_p3_avatar.draw(batch); 

     sprite_p4_avatar.rotate(40 * delta); 
     sprite_p4_avatar.draw(batch); 

のように使用している場合は、旋回しながら、しかし、スプライトは、これらのスプライトは、私は彼らがすべての点で周回ストレートながら滞在したいユーザーのプロフィール写真がそうであるように、反転します。回転しないで円形のパスに沿ってスプライトを移動する方法はありますか?あなたのコードから

enter image description here enter image description here

+0

あなたはスクリーンショットを提供することができますか? – ronscript

+0

screenshotsを追加 –

+0

私はあなたに答えを提供することはできませんが、ここでは数式のリンクです。 http://www.physicsclassroom.com/calcpad/circgrav – ronscript

答えて

3

原点からの距離を表す「ヘルパー」ベクトルを作成できます。そのような

private Vector2 origin; 
private Vector2 distance; 

void ctor(){ 
    origin = new Vector2(); 
    distance = new Vector2(0, 100); 
} 

public void update(float Delta){ 
    origin.set(200, 200); 
    distance.rotate(40 * Delta); 
    Vector2 newPos = origin.add(distance); 
    sprite.setPosition(newPos.x - sprite.width/2, newPos.y - sprite.height/2); 
} 
+0

しかし、どのように毎回スプライトの位置を変更するには?ここでは「程度」は何ですか? –

+0

更新方法でスプライトの位置を変更します。 'degree'の値は、原点を基準にしたスプライトの角度です。 – Draz

+0

私は私の答えを編集しました、それは今よりもそうですか? – Draz

3

それはあなたが彼らを変更することにより、中央(100100)の周りにスプライトを移動する必要があり、その原点は100,100

に設定されているときにのみ、個々のスプライトを回転していることは明らかです地球のような位置は太陽のまわりを動く。

原点はスプライト回転中心です。

だから円適用幾何

double radianDegrees = Math.toRadians(d); 
double updatedX = cx + r * Math.cos(radianDegrees); 
double updatedY = cy + r * Math.sin(radianDegrees); 
の周囲に R = 50、 円の中心(CX、CY)=(100,100)

計算点のようなあなたの形状に半径を与えます

と角度を大きくすると、スプライトを移動するレートが増加します

+0

あなたの答えをありがとう。あなたはこれを適用する方法のように、より具体的になることができますか? –

+0

ここで角度dとは何ですかそれを見つける方法 –

+0

dはすべてのフレームで0から始まり360でリセットする角度です。 –

関連する問題