Защита башни делает башню лицом к лицу с вращением спрайтов монстра

Это мой код для рисования башни:

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

Я сделал это на основе:

Вращение действительно странное, вот как оно выглядит обычно:

введите здесь описание изображения

Но когда он вращается, это происходит так:

введите здесь описание изображения

Наконец, когда он смотрит вниз, он полностью сбивается с пути, он не вращается вокруг своего центра, но движется все изображение, почему он это делает?

введите здесь описание изображения

Только первое изображение на самом деле является башней в правильном положении.

(у меня недостаточно репутации для размещения изображений)


person Technocrat3    schedule 03.09.2014    source источник
comment
Вы уверены, что начало вращения правильное? Это должен быть центр вашей башни (например, new Vector2(TILE_SIZE - TILE_SIZE/2, TILE_SIZE - TILE_SIZE/2))   -  person venerik    schedule 04.09.2014


Ответы (1)


Я бы прокомментировал, но моя репутация слишком низкая... извините. Судя по всему, я совершенно уверен, что ваше происхождение - это положение вашей башни по осям X и Y, на самом деле это должно быть примерно так:

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