Это мой код для рисования башни:
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);
}
Я сделал это на основе:
- http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series2D/Rotation.php
- http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series2D/Direction_to_Angle.php
Вращение действительно странное, вот как оно выглядит обычно:

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

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

Только первое изображение на самом деле является башней в правильном положении.
(у меня недостаточно репутации для размещения изображений)
new Vector2(TILE_SIZE - TILE_SIZE/2, TILE_SIZE - TILE_SIZE/2)) - person venerik   schedule 04.09.2014