Урок 34 – Enemy AI

Создаем новый проект. Размер экрана 288 на 144px. Устанавливаем цвет фона как черный. Т показываем сетку 24 на 24px.

Добавляем тайловый объект GrassPlarform.

Добавляем его на сцену.

Теперь создаем и добавляем игрока на сцену.

Далее добавляем врага.

И добавим еще один объект – это пуля.

Теперь увеличим размер окна, чтобы при запуске игры постоянно его не увеличивать.

И отцентрируем окно.

Теперь придадим главному персонажу поведение Платформера. Только в настройках внесем такие изменения.

А к земле добавляем поведение платформы.

Далее развернем объект при его нажатии на кнопку влево.

Теперь начнем настраивать врага. Сперва сместим точки Origin и Center.

Далее устанавливаем врагу поведение платформера и в настройках задаем такие параметры:

Теперь добавляем врагу переменную.

Далее заставляем врага двигаться.

Теперь создаем два спрайтовых объекта GoLeft и GoRight.

Настраиваем теперь взаимодействие врага с этими объектами.

Теперь добавим следующий спрайтовый объект.

И переместим точки на глаз.

Теперь настраиваем появление этого объекта для каждого врага (по умолчанию он применится только к первому врагу).

Далее мы должны связать объекты EnemyVision и Enemy.

Статья из Wiki для GDevelop:

Действия и условия категории Link позволяют нам устанавливать виртуальные соединения между объектами. Это действие создает связи между объектом (ами) в первом параметре и объектом (ами) во втором параметре.

Учитывайте связанные объекты

Существует как действие, так и условие, называемое «Учитывать связанные объекты».

Это действие сканирует объекты в первых параметрах, и для каждого из них, если из него зарегистрирована ссылка на любой из объектов во втором параметре, они будут выбраны для следующих действий. После выполнения этого действия действия действия, которые выполняются следующим образом (а также суб-события), будут выполняться только для объектов, которые были выбраны.

Примеры

В этом примере для каждого существующего объекта «Pathfinder» создается новый объект «Terrain». Этот шаг создания и связывания должен выполняться только один раз. Нижнее событие запускается каждый кадр и заставляет объекты «Terrain» всегда следовать объекту «Pathfinder», с которым они связаны.

Т.е. если не связать объекты как в примере выше, то все объекты Terrain будут следовать за одним последним объектом, который будет выбран, а так благодаря связи, они следуют каждый за своим связанным объектом.

А если мы свой код напишем так, вроде же тоже все логично.

То он не будет корректно работать, так как действие будет повторятся для всех EnemyVision, но в действие будет учитываться только положение первого врага, но так как мы выбрали каждого EnemyVision, но не каждого Enemy. И будет следовать только первый EnemyVision за Enemy, но у остальных нет ссылки на первый объект, и они не будут следовать. Если мы условие удалим, когда выбираем все связанные EnemyVision и Enemy, то все EnemyVision будут следовать за одним Enemy.

Вот так выглядит правильный код.

Как видите, здесь также есть код, который переворачивает EnemyVision.

Теперь добавляем bullet на сцену и добавляем ему поведение удаление объекта, когда он находится за сценой. И еще добавим ему физическое поведение.

Теперь добавляем пулю (удалив перед этим ее со сцены) при колизии игрока и EnemyVision. Спера надо добавить таймер в начале сцены.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *