2011-07-03 19 views
3

私はTexture2Dスプライトを回転させて作業しています。私が使っていた:Cの点に向かって2D画像を回転する

フロート円= MathHelper.Pi * 2。
RotationAngle = RotationAngle%circle;

ScreenManager.SpriteBatch.Draw(車、screenpos、ヌル、Color.White、回転角度、car_origin、1.0F、SpriteEffects.None、0F)。

私のテストテクスチャ "車"の回転を処理するのが大部分です。 Pi * 2の回転角は、方向に応じて0〜-6.283185または0と6.283185の間の値であるようです。今私がしたいのは、テクスチャをある方向(テクスチャが矢印であると言います)から場所(現在のマウスの位置などのベクトル2)に向かって回転させることです。私はベクトル2の位置に基づいてこの回転角度をどのように変更する必要があるのか​​、どうすればいいか分かりません。

答えて

5

SpriteBatch.Drawにアングルをラップする必要はありません。しかし何らかの理由でアングルを折り返したい場合は、MathHelper.WrapAngleMSDN)を使用することをお勧めします。

ここで方向と距離を表すVector2があるとします(車からカーソルまでの方向と距離についてはmousePos - carPosの場合など)。そしてあなたはその方向性を持って角度に変換したいと思っています。 (mousePos - carPos).Angle():あなたのような何かをしたい、あなたの角度を取得するには、だから、

public static float Angle(this Vector2 v) 
{ 
    return (float)Math.Atan2(v.Y, v.X); 
} 

extension methodは、この1のように使用します。

詳細はdocumentation for Atan2を参照してください。

+2

あなたは天才です。私はちょうどそれを試して、それは素晴らしい作品、ありがとう! – Ted

関連する問題