Главная страница
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.036 c
1-1100258492
Frozzen
2004-11-12 14:21
2004.11.28
Поскажите как очистить Canvas?


4-1097676921
Rico-X
2004-10-13 18:15
2004.11.28
Перехват сообщений нестандартного оборудования.


6-1095754729
needhelp
2004-09-21 12:18
2004.11.28
encoding


8-1093499666
widoms
2004-08-26 09:54
2004.11.28
Хранение изображений.


10-1068562249
AlexanderSK
2003-11-11 17:50
2004.11.28
В каком режиме синхронном или асинхронным работает DataSnap?