2009-08-07 3 views
0

Как бы вы достигли определенного наклона для движущегося объекта? Я пытаюсь получить врага, чтобы появиться экран в точке x, y и пролететь сам по себе через экран к новому x, y, одновременно добавляя наклон, чтобы он выглядел так, будто он набрасывается вниз, прямо или вверх. что-то вроде того. Прямо сейчас у меня есть только знание нереста и перемещения моих врагов в определенном направлении и не знаю, что посмотреть отсюда.Враги и склоны

+0

Я хочу дать вам ответ, который использует какую-то параметрическую кривую/сплайн (например, Безье), но теория немного сложна. Можете ли вы опубликовать код, который в настоящее время перемещает противника, и, возможно, мы сможем найти способ добавить это в этом не слишком уродливо. –

+2

Будьте более конкретным. (Я знаю, что этот комментарий лицемерен) – immibis

+0

Вы спрашиваете, как сделать объект движением по определенному пути, который не просто прямой? – Daniel

ответ

1

Если вы хотите, чтобы двигаться в прямой линии между точками, то вы можете рассчитать дельта X и дельта Y как:

DX = X2-X1; 
DY = Y2-Y1; 

Затем, если вы хотите переместить определенное расстояние (скорость/кадр), нормализовать длину с помощью Пифагора теорема:

HYP = DX*DX + DY*DY; 
HYP = sqrt(HYP); 
DX = MoveD * DX/HYP; 
DY = MoveD * DY/HYP; 

Тогда:

// Move Distance (MoveD) From X1,Y1 to X2,X2 each screen update. 
if ((abs(X2-X)<DX)&&(abs(Y2-Y)<DY)) 
{ 
    X = X + DX; 
    Y = Y + DY; 
} else 
// STOP 

«налетать ing "может быть выполнено путем изменения конечной точки динамически. Начните с конечной точки перед «Целевым» и переместитесь через цель и создайте «прыгающее» движение. Добавьте «Уклонение скорости», чтобы ускорить движение вниз и замедлить движение вверх.

Это также может быть добавлено к целочисленной математике с использованием вариации на линии рисования аль-Бартхэма или DDA.

+0

Вы имеете в виду «линейный алгоритм» Брешенема * – tpdi

+0

Также вы имеете в виду «* Ускоряет * движение вниз и * замедляет движение * вверх». –

Смежные вопросы