avatar

Система самонаведения в GameMaker 8

опубликовал в Game Maker
Предлагаю весьма простой способ реализации самонаведения на GML.
Объект будет непрерывно следовать за другим объектом, причём без рывков, с плавным поворотом и возможностью настраивать все параметры.
В Create объекта, который будет наводиться пишем:

Run_Speed    = (любое число); //Скорость движения объекта
Rotate_Speed = (любое число); //Скорость вращения объекта

В Step объекта, который будет наводиться пишем:

MX = (за кем следить.x); //Если за курсором мыши, то (mouse_x)
MY = (за кем следить.y); //Если за курсором мыши, то (mouse_y)
if (image_angle > 180)
   {
   image_angle -= 360
   };
if (image_angle < -180)
   {
   image_angle += 360
   };
ma = (-180 * arctan2 (MY-y,MX-x) / pi); //Вычисление углов
MX = (ma - image_angle);
MY = (360 + MX);
if (MY > 360)
   {
   MY -= 720
   };
if (abs(MX) > abs(MY))
   {
   MX = MY
   };
if (abs(MX) < Rotate_Speed)
   {
   image_angle = ma
   };
else
{
if (MX > 0)
   {
   image_angle += Rotate_Speed //Поворот
   }
else 
   {
   image_angle -= Rotate_Speed //Поворот
   }
};
x -= (Run_Speed * sin(pi *(image_angle - 90) / 180)); //Присвоение координаты x
y -= (Run_Speed * cos(pi *(image_angle - 90) / 180)); //Присвоение координаты y

Возможно придётся поиграть с настройками скоростей, дабы избежать зацикливания по-кругу.
Если возникнут вопросы, прошу обращаться, помогу чем смогу.

3 комментария

avatar
MX = (за кем следить.x); //Если за курсором мыши, то (mouse_x)
MY = (за кем следить.y); //Если за курсором мыши, то (mouse_y)
if (image_angle > 180)
{
как для клавиатуры написать
avatar
Вместо mouse_x/mouse_y пишешь имя объекта, в котором отдельно прописываешь управление клавиатурой.
Чтобы оставить комментарий необходимо .