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 回答