Game Maker - создание игр | HellRoom Games
Май 13, 2025, 10:04:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Движение вражеского юнита в game maker 2  (Прочитано 1271 раз)
0 Пользователей и 1 Гость смотрят эту тему.
viti4
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 10


« : Июнь 05, 2023, 20:07:40 »

Здраствуйте уважаемые форумчане. Столкнулся с такой проблемой и не могу её решить, т.к. недавно увлёкся созданием игрульки. Суть вопроса такова: Есть объект враг. необходимо реализовать следующее: есть путь созданный путь движения, если игрок приближается скажем на 100 пикселей, враг начинает следовать за ним огибая препятствия, если же игрок отдаляется более чем на 100, враг начинает следовать указанному пути с фактических координат. если попадаются препятствия при следовании по пути, враг не должен останавливаться, а должен двигаться в ту сторону, с которой нет препятствия, если это предусмотрено созданным путём!

что у меня получилось:
1 - в создании врага пишу:     path_start(Path1,3,path_action_reverse,0)

2 - в шаге врага пишу:            if(distance_to_object(ob_pers)<256)
                                            {
                                          path_end()
                                               mp_potential_step(ob_pers.x, ob_pers.y, 3,false);
                                            }
ну и как вы поняли, после следования за игроком, если я убегаю дальше 256 пикселей, враг останавливается и не движется.
Как мне добиться требуемого результата? на форуме поискал, не нашёл решения, может плохо искал)
Записан
AndrewVideoGames
Главный Модератор
*

Репутация: 821
Offline Offline

Пол: Мужской
Награды:
За постоянность! [500 дней на форуме]За лояльность! [+750 репутации]5000 сообщений!За помощь новичкам!
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316



« Ответ #1 : Июнь 06, 2023, 10:37:01 »

У вас много условий, я бы предожил сделать стейтмашину, в которой будет определены все состояния и переходы из одного состояния в другое, что-то вроде:
Create
Код: (Create)
state = "start";
searchDistance = 100;
chaseSpeed = 3;
Step
Код: (Step)
switch(state)
{
case "start":
path_start(Path1, 3, path_action_reverse, 0);
state = "search";
break;

case "search":
if (distance_to_object(ob_pers) <= searchDistance)
{
path_end();
state = "chase";
}
break;

case "chase":
if (distance_to_object(ob_pers) <= searchDistance)
{
mp_potential_step(ob_pers.x, ob_pers.y, chaseSpeed, false);
}
else
{
state = "start";
}
break;
}

По поводу сгибания препятствий – вбейте в Поиск "обход препятствий", "обход объектов", "поиск пути", "путь пути по сетке".
Записан
viti4
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 10


« Ответ #2 : Июнь 06, 2023, 16:33:09 »

Спасибо за помощь))) буду пробовать)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.087 секунд. Запросов: 28.