0

これは、タワーを描画するための私のコードです。

SpriteBatch.Draw(
    GetTowerImage(m.SquareTower), 
    new Rectangle(m.X * TILE_SIZE, m.Y * TILE_SIZE, TILE_SIZE, TILE_SIZE), 
    null, 
    Color.White, 
    m.SquareTower.Rotation, 
    new Vector2(TILE_SIZE - 35, TILE_SIZE - 35), 
    SpriteEffects.None, 
    (float)0.0);

タワーの位置を取得して配置するコードですが、回転メソッドが実行されて画像が回転すると

public void FaceTarget(Vector2 center, Vector2 enemyCenter)
        {
            Vector2 direction = center - enemyCenter;
            direction.Normalize();

            this.Rotation = (float)Math.Atan2(-direction.X, direction.Y);
        }

私はこれに基づいてこれを行いました:

回転は非常に奇妙です。通常は次のようになります。

ここに画像の説明を入力

しかし、回転すると次のようになります。

ここに画像の説明を入力

最後に見下ろすと、完全に道から外れます。中心で回転しているのではなく、画像全体が動いているのはなぜですか?

ここに画像の説明を入力

最初の画像だけが実際に正しい位置にある塔です

(画像を投稿するほどの評判はありません)

4

1 に答える 1

0

コメントしますが、評判が低すぎます...申し訳ありません。見てみると、原点がタワーの X と Y の位置であることがわかります。実際には次のようになっているはずです。

// AKA the centre of your tower relative to it's Vector2 position
Vector2 origin = new Vector2(towerWidth / 2, towerHeight / 2);
于 2014-09-19T20:35:44.520 に答える