![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
из точку в точку по прямой. [Delphi, Windows]
Tankist © (2002-12-12 11:48:00)У меня такая проблема: я - новичок в GameDev...Начал писать свой первый проект...все хорошо приклеил, персонаж двигается...только двигается он у ж очень не естевственно: сначала идет по диагонали (x+1;y+1),когда достигает x или y идет соответственно по прямой по y или x подскажите формулу для подсчета движения из пункта а в пункт b напрямую?
TButton (2003-01-11 19:57:00) [1]2Omar 2003
Он не будет идти по квадратам дергаясь если помимо координат квадрата запоминать смещение относительно квадрата. Как только смещение превысит размер квадрата оно обнуляется и юнит передается другому квадрату.
Omar 2003 (2003-01-11 12:49:00) [2]Кык правило в играх вся территория делится на квадраты (так удобней делать просчет маршрута и предусматривать ненаезжание юнитов друг на друга, а так же это удобно для создания карт), а по квадратам он будет идти дергаясь, поэтому следует на протяжении всей хотьбы зафиксировать его спрайт.
Если нужен просчет маршрута, то можешь сходить на www.delphigfx.narod.ru, там вобще много полезностей валяется, которые и для новичков подойдут.
Mirovodin (2003-01-10 15:19:00) [3]Еще немаловажный фактор - нужно хранить Double значения спрайта для более реалистичного медленного движения:
TSprite = Class ...
fXFlt, fYFlt: Double;
fX, fY : integer;
...
fXFlt:=fXFlt+dX;
fYFlt:=fYFlt+dY;
fX:=Trunc(fXFlt);
fY:=Trunc(fYFlt);
TButton (2003-01-10 15:11:00) [4]dx:=(x2-x1)/steps;
dy:=(y2-y1)/steps;
далее x1 и y1 приращаешь по dx и dy соответственно
steps - количество шагов за который проходится путь; если нет числа шагов, но есть скорость, то считаешь число шагов по формуле
s=SQRT(SQR(x2-x1)+SQR(y2-y1)); //теорема пифагора
steps=s/v; //v - скорость
OlegL (2002-12-21 12:19:00) [5]vitas2 конечно прав но, тут есть нюнсы с углом. То есть если угол прямой меньше 45 относительно x то даём х и получаем у, а если на оборот, больше 45, выводим формулу так что-бы можно было дать у и получить х.
vitas2 (2002-12-12 12:25:00) [6]если есть 2 точки то можно написать уравнение прямой потом ставиш координаты х и получаеш у ;-)