Главная » Статьи » Конструкторы игр, системы разработки игр » Scirra Construct » Создаем искусственный интеллект
|
Создаем искусственный интеллект
[ Поделиться ]
[ Спасибо! ]
|
20:31
Всем привет, в этой статье я хотел бы вместе с вами создать несколько поведений для противника.
Поведение №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™, успехов!
Категория: Scirra Construct |
Просмотров: 10190 |
Добавил: Loko™ (18.11.2012)
| Рейтинг: 5.0/4
Теги: |
HTML ссылка на материал: BB ссылка на материал: |
Всего комментариев: 1 | |
| |