2016-05-25 10 views
0

私のゲームで私はスプライト1とスプライト2を持っています。 Sprite1は中心を持ちます。私はスプライト1の原点をスプライト2に使用します。しかし、両方のスプライトは適切に整列しません。あなたのスプライトの中心と別のスプライトを持ってLibGDXの別のスプライトの起点の周りにスプライトを回転させるには?

sprite1.setRegion(AssetLoader.rocket); 
    sprite1.setPosition(rocket.getX(), rocket.getY()); 
    sprite1.setOrigin(rocket.getWidth()/2, rocket.getHeight()/2); 
    sprite1.setSize(rocket.getWidth(), rocket.getHeight()); 
    sprite1.setRotation(rocket.getRotation()); 
    sprite1.setScale(1, 1); 
    sprite1.draw(game.batch); 

    int w = 70; 
    int h = 20; 
    float x = escapePod.getX() + escapePod.getWidth()/2 - w/2; 
    float y = escapePod.getY() + escapePod.getHeight()/2 - h/2 - (escapePod.getHeight() + 4); 
    sprite2.setRegion(AssetLoader.flame); 
    sprite2.setPosition(x, y); 
    sprite2.setOrigin(sprite1.getOriginX(), sprite1.getOriginY()); 
    sprite2.setSize(w, h); 
    sprite2.setRotation(rocket.getRotation()); 
    sprite2.setScale(1, 1); 
    sprite2.draw(game.batch); 

答えて

1

: はここに私のコードです。あなたはそれらの間の距離を計算することができます。回転角度と角度を取得したら、スプライトを回転させて、別のスプライトの位置を計算します。右の位置にある場合は、角度の負の値で別のスプライトを回転させます。

+0

答えてくれてありがとうございますが、sprite2のsetOriginパラメータにはどうしたらいいですか? – Harry

+0

@ハリー・バンダああ、よく分かるのは、あなたができる最も簡単な方法は、 x = x * cos(角度) - y * sin(角度)、y = x * sin(角度)-y * cos angle)ここで、xとyはスプライトの中心の座標で、angleは回転の角度です。 – eldo

関連する問題