Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

Как сделать так, чтобы башня танка была направлена на курсор   Найти похожие ветки 

 
SwitchBlade   (2004-07-28 06:53) [0]

Здравствуйте, пишу игру на DelphiX, посмотрите пожалуйста пример кода и скажите в чем ошибка, проблема в том, что башня поворачивается медленнее, чем нужно и при угле в 90 градусов перескакивает на -11, при одном полном повороте по часовой стрелке уже поворачивается не вслед за мышью. Пожалуйста, если не трудно приведите пример 100% работоспособного кода.

procedure TPlayer_Top.DoMove(MoveCount: Integer); //башня
begin
inherited DoMove(MoveCount);
X:=Player_Down.X;
Y:=Player_Down.Y;
PY:=round(Y-MouseY);
PX:=round(X-MouseX);
Angle:=round(RadToDeg(ArcTan2(PY,PX)));
if Angle<0 then Angle:=256+Angle;
end;


 
Megabyte-CeerCop ©   (2004-07-28 08:50) [1]

Дело в том, что RadToDeg возвращает окружность как 360 гр.
А Angle у спрайта воспринимает за окружность 256.

Замени нижнюю строку на:
if Angle<0 then Angle:=360 + Angle;
//преобразуем в положительный угол в нормальных градусах
Angle := round( Angle / 360 * 256)
//преобразуем угол в градусах к углу в еденицах Sprite.Angle


Должно работать.

ЗЫ Как разберешься, преобразуй мои две строки в одну, для треннировки :-)


 
SwitchBlade ©   (2004-07-28 09:25) [2]

Спасибо большое, не могу понять, как я до этого не додумался, хотя мысль схожая была. Всё работает нормально теперь.



Страницы: 1 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.056 c
3-1098175505
Grizzly
2004-10-19 12:45
2004.11.28
Выгрузка БД в текстовый файл


1-1100241460
TankMan
2004-11-12 09:37
2004.11.28
Скажите как запускать коммандную строку с досовскими командами?


1-1100505669
olookin
2004-11-15 11:01
2004.11.28
Breakpoint не работает.


14-1100248016
Koala
2004-11-12 11:26
2004.11.28
Модем внутренний, полный


1-1100245000
Семен
2004-11-12 10:36
2004.11.28
F :TextFile и поиск по нему