В настоящее время я пытаюсь повернуть спрайт в зависимости от того, на сколько градусов (или рад, я предпочитаю градусы) он отличается от прямого взгляда на цель, проблема в том, когда цель достигает определенной позиции, и спрайты решают повернуться на 360 градусов в другую сторону вместо того, чтобы делать дополнительные 10. Это изображение, вероятно, лучше объясняет проблему:
Синий квадрат = цель
Красный квадрат = объект
Зеленая линия = вращение, которое он хочет
Черная линия = текущее вращение
Коричневая стрелка = как он вращается, чтобы достичь этого
Красная стрелка = как я хочу, чтобы он вращался.
Обратите внимание, что Случай 1 всегда работает, в зависимости от того, как он вращается, но Случай 2 всегда делает это вращение, независимо от того, находится ли он «вправо» или «влево» от текущего вращения.
Это код, который я использую для поворота объекта.
Vector2 distance = new Vector2(target.worldPos.X - this.worldPos.X, target.worldPos.Y - this.worldPos.Y);
float wantRot = (float)Math.Atan2(distance.Y, distance.X);
if (this.rotation < wantRot)
this.rotation += MathHelper.ToRadians(45) * Time.deltaTime;
if (this.rotation > wantRot)
this.rotation -= MathHelper.ToRadians(45) * Time.deltaTime;
Я хочу, чтобы он вращался (в случае 2) в соответствии с красной стрелкой вместо коричневой.
ПРИМЕЧАНИЕ: Я не специалист в программировании, я делал это только время от времени в течение последнего года (в основном простые 2D-шутеры / игры типа стрелялки), поэтому подробные объяснения будут оценены . Я тоже изучаю программирование.
PS: Предложения по названию также были бы признательны, так как я понятия не имел, что туда поместить.