Главная страница
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.044 c
1-1100338954
Balkon
2004-11-13 12:42
2004.11.28
Проблема с посылкой сообщения потоку.


14-1099976334
Defunct
2004-11-09 07:58
2004.11.28
разговаривать на любые отвлеченные темы


14-1100179330
peypivo
2004-11-11 16:22
2004.11.28
Джава и ЖПРС


1-1100621755
TDBGridEh
2004-11-16 19:15
2004.11.28
TDBGridEh - footer....


14-1100249493
Ten199
2004-11-12 11:51
2004.11.28
Как купить EhLib или как мы работаем...