塔防使塔面朝向怪物spritebatch旋转

时间:2014-09-03 22:18:29

标签: c# xna rotation spritebatch

这是我绘制塔的代码:

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);
        }

我这样做的基础是:

轮换真的很奇怪,这就是它的正常表现:

enter image description here

但是当它旋转时它会像这样:

enter image description here

最后,当它往下看时,它完全偏离路径,它的中心不会旋转,但整个图像正在移动它为什么会这样做?

enter image description here

只有第一张图像实际上是正确位置的塔

(我没有足够的声誉发布图片)

1 个答案:

答案 0 :(得分:0)

我会发表评论,但我的名声太低了...抱歉。 从它的外观来看,我非常肯定你的起源是你的塔的X和Y位置,它应该是这样的:

// AKA the centre of your tower relative to it's Vector2 position
Vector2 origin = new Vector2(towerWidth / 2, towerHeight / 2);