Форум: "Игры";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
ВнизКак сделать так, чтобы башня танка была направлена на курсор Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.045 c