Поворот вектора на заданый угол:
public function rotateVector(vector:Point, angle:Number):Point {вернёт повёрнутый вектор; исходный не изменяет; угол в градусах.
angle = (angle*Math.PI)/180;
var returnPoint:Point = new Point();
returnPoint.x = vector.x*Math.cos(angle) - vector.y*Math.sin(angle);
returnPoint.y = vector.x * Math.sin(angle) + vector.y*Math.cos(angle);
return returnPoint;
}
Движение к заданной точке:
обновление координат по таймеру или по Event.ENTER_FRAME
// 1) находим вектор направления движения:
var movingVector:Point = destinationPoint.subtract(new Point(x,y));//destinationPoint - куда движемся, new Point(x,y) - откуда движемся.
// 2) находим* длину пути:
var pathLength:Number = movingVector.length;
// 3) нормализуем вектор направления
movingVector.normalize(Math.min(speed,pathLength));// speed - скорость движения(например 1)
// 4) и собственно двигаем что нужно если нужно(например pathLength!=0)
x += movingVector.x;
y += movingVector.y;
Комментариев нет:
Отправить комментарий