Создать игру, создание игр, конструктора игр, игровые движки, разработка игр, сделать игру
Приветствую Вас Гость · Вход · Регистрация  ·  Новые сообщения · Участники · Правила · Поиск · RSS
Страница 1 из 11
Форум разработчиков игр » Полезные статьи, Примеры и Исходники » Scirra Construct » [Статья] Создаем искусственный интеллект (Учим противника ходить и стрелять)
[Статья] Создаем искусственный интеллект
Loko™ Дата: Среда, 14.11.2012, 21:36 | Сообщение # 1
Просмотр профиля: Loko™

Сообщений: [146]


Всем привет, в этой статье я хотел бы вместе с вами создать несколько поведений для противника.

Поведение №1. Патрулирующий
Описание: Противник патрулирует определенную область. Т.е. передвигается из одного места в другое.
Как будет реализовано: Мы создадим противника и две стенки. При касании противником одной из стенок, он разворачивается на 180 градусов.


Создаем врага:
Insert an object – Sprite – рисуем противника – сохраняем
Переименуйте только что созданный спрайт в theEnemy.

Создаем стену:
Insert an object – Sprite – рисуем стену (в игре она будет невидимой, так что сильно не старайтесь biggrin ) – сохраняем
Переименуйте только что созданный спрайт в 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™, успехов!


Сообщение отредактировал: Loko™ - Воскресенье, 18.11.2012, 20:49
Форум разработчиков игр » Полезные статьи, Примеры и Исходники » Scirra Construct » [Статья] Создаем искусственный интеллект (Учим противника ходить и стрелять)
Страница 1 из 11
Поиск:

При полном или частичном копировании материалов сайта ссылка на Make-Games.ru обязательна. Make-Games.ru © 2008 - 2016 Хостинг от uWeb
Топ Разработка игр Рейтинг@Mail.ru