PDA

Просмотр полной версии : Подскажите формулу движения из точки А в точку Б


Dragon rideR
26.06.2007, 10:19
Подскажите формулу движения из точки А в точку Б, только чтобы движение проходило с РАВНОЙ скоростью. Пользовался формулой из исходников
move_from_x=(move_from_x+move_to_x)/2
Но при ее использовании скорость движения идет с понижением от начала к концу :(

CorC
26.06.2007, 10:28
mc._x=A+(B-A)*time/TotalTime;

0<time<TotalTime

†‡Paladin‡†
26.06.2007, 13:10
var speed:Number = 5;
var dx:Number = target._x - object._x;
var dy:Number = target._y - object._y;
var angle:Number = Math.atan2(dy, dx);
var vx:Number = Math.cos(angle) * speed;
var vy:Number = Math.sin(angle) * speed;
arrow._x += vx;
arrow._y += vy;

Dragon rideR
26.06.2007, 13:57
var speed:Number = 5;
var dx:Number = target._x - object._x;
var dy:Number = target._y - object._y;
var angle:Number = Math.atan2(dy, dx);
var vx:Number = Math.cos(angle) * speed;
var vy:Number = Math.sin(angle) * speed;
arrow._x += vx;
arrow._y += vy;
Хороший вариант, только изза погрешности сложно определить конец цикла

†‡Paladin‡†
26.06.2007, 16:11
var speed:Number = 5;
var dx:Number = target._x - object._x;
var dy:Number = target._y - object._y;
var angle:Number = Math.atan2(dy, dx);
var vx:Number = Math.cos(angle) * speed;
var vy:Number = Math.sin(angle) * speed;

if(Math.abs(Math.sqrt(dx * dx + dy * dy)) < speed)
{
object._x = target._x;
object._y = target._y;
}
else
{
object._x += vx;
object._y += vy;
}