Главная » Статьи » Конструкторы игр, системы разработки игр » Scirra Construct » Создаем искусственный интеллект |
Создаем искусственный интеллект
[ Поделиться ]
[
Спасибо! ]
|

Всем привет, в этой статье я хотел бы вместе с вами создать несколько поведений для противника.
Поведение №1. Патрулирующий
Описание: Противник патрулирует определенную область. Т.е. передвигается из одного места в другое.
Как будет реализовано: Мы создадим противника и две стенки. При касании противником одной из стенок, он разворачивается на 180 градусов.
Создаем врага:
Insert an object – Sprite – рисуем противника – сохраняем
Переименуйте только что созданный спрайт в theEnemy.
Создаем стену:
Insert an object – Sprite – рисуем стену (в игре она будет невидимой, так что сильно не старайтесь
) – сохраняем Переименуйте только что созданный спрайт в block.
Размещаем одну стену, копируем ее (ПКМ - Copy), вставляем (ПКМ - Paste) и размещаем вторую стену в другом месте. Между этими стенами помещаем противника.
Сделаем стены невидимыми в игре:
Выделяем стену – Properties – ставим галочку напротив Invisible on start
Сделаем так, чтобы противник смог "ходить” по прямой линии, для этого добавим ему поведение Bullet (Пуля):
Выделяем theEnemy – Properties – Behaviors – Add – Bullet – Insert
Можно сразу же обратить внимание на некоторые параметры этого поведения:
Speed – это скорость передвижения;
Acceleration – ускорение;
Destroy when – когда нужно уничтожать объект (Outside layout – если объект вышел за пределы уровня; Offscreen – если объект вышел за пределы видимости экрана; Never – никогда; Range exceeded – при превышении диапазона).
Переходим в редактор событий (Event Sheet Editor).
Событие:
Insert event – theEnemy – On collision with another object – Pick an object - block
Действие:
New action – theEnemy – Set angle – в нижнем окне выбираем theEnemy – Get angle – в поле Angel прописываем "theEnemy.Angle + 180” (без кавычек) – Finish
Только что мы сделали так, что при соприкосновении противником стены – он поворачивался на 180 градусов.
Поведение №2. Стрелок
Описание: Противник стоит на месте и стреляет по прямой через определенные интервалы времени.
Как будет реализовано: Мы создадим противника, пулю и заставим его через каждые полторы секунды стрелять.
Создаем противника:
Insert an object – Sprite – рисуем противника – сохраняем
Переименуйте только что созданный спрайт в theShoot.
Создадим пулю, которую будет испускать противник:
Insert an object – Sprite – рисуем пулю – сохраняем
Переименуем только что созданный спрайт в bul.
Дадим объекту bul поведение пули:
Выделяем bul – Properties – Behaviors – Add – Bullet – Insert
Переходим в редактор событий (Event Sheet Editor).
Событие:
1. Insert event – theShoot – Object is on-screen?
2. Insert new condition – System – Every X milliseconds – пишем значение 1500 – Finish
Действие:
New action – theShoot – Spawn another object – Pick an object – bul – не забывайте в поле Layout указать номер слоя, на котором должна быть создана пуля - Finish
В событии №1 мы указали условие, при котором противник начнет стрельбу, т.е. только тогда, когда он видим на экране. Если вы хотите, чтобы противник стрелял всегда – поставьте System – Always.
Во втором событии мы установили интервал, через который противник будет стрелять.
В действии мы, собственно, сделали так, чтобы противник начал стрелять.
Все бы хорошо, но противник стреляет вправо! Сделаем так, чтобы он стрелял налево:
Выделяем theShoot - Properties - в поле Angle пишем 180 (указали направление взгляда противника) - ставим галочку напротив Auto mirror (автоматическое отзеркаливание по горизонтали).
Ну вот, теперь все так, как нужно.
Поведение №3. Преследующий
Описание: Героя начинают преследовать множество противников, которые следуют точно ему по пятам
Как будет реализовано: Мы создадим героя и нескольких противников. Противникам дадим поведение Custom Movement и с помощью редактора событий заставим их каждую секунду следовать в направлении героя.
Создаем героя:
Insert an object - Sprite - рисуем отважного рыцаря - сохраняем
Переименуйте только что созданный спрайт в bazis
Создаем противника:
Insert an object - Sprite - рисуем что-то маленькое и с крыльями - сохраняем
Переименуйте только что созданный спрайт в flyEnemy.
Сделайте несколько копий противника и раскидайте их по уровню.
Дадим противникам поведение Custom Movement:
Выделяем flyEnemy - Properties - Behavior - Add - Custom Movement - Insert
Переходим в редактор событий (Event Sheet Editor).
Событие:
Insert event - System - For Each Object - Pick an object - flyEnemy - Finish
Подсобытие:
Правой кнопкой мыши по только что созданному событию - Insert sub-event - flyEnemy - Compare X position - в графе Comparison выбираем Less or Equal, в X co-ordinate пишем "bazis.X + 500" (без кавычек) - Finish
Действия для подсобытия:
1. New action - flyEnemy - переходим во вкладку Custom Movement - Change angle towards object - Pick an object - bazis - Finish
2. New action - flyEnemy - переходим во вкладку Custom Movement - Change speed - Set, Speed = 200 - Finish
Событие - мы выделили всех противников flyEnemy.
Подсобытие - установили причину начала движения противников. Т.е. если герой находится на расстоянии меньше, чем в 500 единиц - flyEnemy начинают движение в сторону героя.
Действие 1 - задаем направление движения противников (т.е. их цель - герой).
Действие 2 - задаем скорость движения противников.
Данная техника вычисляет расстояние между героем и противником по оси X. Если вам нужно вычисление расстояния по оси Y, то в подсобытии выбираем Compare Y position, и не забываем изменить X на Y в выражении "bazis.X + 500"
Надеюсь, принцип создания ИИ вам понятен, и вы сможете реализовать то, что вам нужно.
С вами был Loko™, успехов!
|
|
|
HTML ссылка на материал: BB ссылка на материал: |
|
Похожие материалы :
|
Возможно вам будет интересно:
О игрострое, движках и людях (1) Знакомство с Движком! (0) Функция LIST (0) Броня для игрока (1) Создание TDS (0) Задротство - основа MMO игр (10) Наложение Текстуры На Модель в 3DGS (MED) (0) Создаем платформер. Scirra Construct (4) Самообучение ИИ (1) Создание многопользовательской(online) игры на Game Maker. (часть 4) (1) Учимся писать игру на Delphi (3) Урок про скелетную анимацию (0) Уроки Scirra Construct (0) Подробности о Unreal Engine 3.0 (3) PHP - Базовые понятия (0) |
| Всего комментариев: 1 | |
|
| |








Дополнительно:


Спасибо!



