Я программирую флеш игру, я создал массив точек (x и y позиции), которым должны следовать некоторые видеоклипы. Эти мувиклипы имеют определенную скорость (пока они делают шаги в 5 пикселей). Когда я хочу переместить их по горизонтали или вертикали, все в порядке, я должен добавить или удалить 5 пикселей этих клипов x или y. Но иногда они должны двигаться по диагонали, и теперь это сложно.
Что я делаю:
var angle:Number = Math.atan2(nextPoint.y - this.y, nextPoint.x - this.x) * 180 / Math.PI;
var xstep:Number = Math.cos(angle) * this.speed;
var ystep:Number = Math.sqrt(Math.pow(this.speed, 2) - Math.pow(xstep, 2));
this.x += xstep;
this.y += ystep;
Это только часть кода, но я думаю, что это все, что вам нужно.
По сути, это заставляет мой мувиклип сделать небольшой шаг (из этого.speed (в настоящее время установлен на 5) пикселей).
Если текущая точка и следующая точка имеют одинаковую позицию y, она работает нормально. Когда они этого не делают, это не работает. Сначала угол правильный, но он медленно уменьшается (при этом он должен оставаться прежним). Я не знаю, правильно ли рассчитывается угол или шаги x и y, но я уверен, что это один из них.