В настоящее время я пытаюсь повернуть спрайт в зависимости от того, сколько градусов (или рад, я предпочитаю градусов), оно отличается от прямой к цели, проблема в том, когда цель достигает определенной позиции, спрайты решают сделать поворот полный 360 на другой способ вместо того, чтобы делать 10 дополнительных. Эта картина, вероятно, лучше объясняет проблему:
Синий квадрат = цель
Красный квадрат = объект
Зеленая линия = вращение, которое он хочет
Черная линия = текущее вращение
Браун arrow = как он вращается для достижения этого
Красная стрелка = как я хочу, чтобы она вращалась.
Обратите внимание, что случай 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-шутер/shoot'em вверх по виду игр), поэтому в подробном объяснении будет оценено, Я также участвую в обучении программированию.
PS: Предложения по титулу также будут оценены, поскольку я не имел абсолютно никакого представления о том, что там делать.