Создаем искусственный интеллект - Scirra Construct - Конструкторы игр, системы разработки игр
Навигация по сайту
Сайт:

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

Файловый архив:

Каталог статей:

Форум:


Категории раздела
Game Maker [27]
Flash [3]
FPS Creator X9, X10 [1]
Scirra Construct [14]
Multimedia Fusion [0]
001 Game Maker, Map 001 [0]
3D RAD [16]
3D Game Studio [1]
Silent Walk FPS Creator [0]
Blender (Блендер) [1]
Game Editor [0]
Остальное [1]
Все остальное, что не попадает ни под одну категорию.

Мини-Опрос
Какова Ваша специальность?
Всего ответов: 1058

Партнеры сайта
....

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

Создаем искусственный интеллект

20:31

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

Поведение №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™, успехов!

Категория: Scirra Construct | Просмотров: 10177 | Добавил: Loko™ (18.11.2012) | Рейтинг: 5.0/4
Теги: Искусственный интеллект скирра, ии, Ai
HTML ссылка на материал:
BB ссылка на материал:
Похожие материалы :
Возможно вам будет интересно:
Полезные функции и процедуры: часть 1 (0)
PHP и MySQL – Теоретический курс. Введение. (2)
Гоночное авто (0)
Blitz 3D - полезная дипломная работа (часть 2) (0)
Работа с Сетью в Blitz3D: TCP (0)
Моя первая страница на PHP (0)
То, что нужно знать всем, кто движется в сфере геймдева. (1)
Серия уроков по 3d Rad (0)
Массивы (0)
Создание света (освещение уровня) (0)
Наложение Текстуры На Модель в 3DGS (MED) (0)
Поиск файлов на винчестере в Delphi (0)
Работа с движком Newton (Blitz 3D) (0)
Создание многопользовательской(online) игры на Game Maker. (часть 2) (0)
Что такое ПХП и как он работает? (0)
Всего комментариев: 1
1 blib   (30.12.2014 08:17) [Материал]
А какие нть еще ИИ в скирре можно запилить?
Оч годная статья, для тех кто начинает!

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Поиск по всему сайту:
Поиск по разделу:

Панель пользователя
Здравствуйте, Гость


Ник:
Пароль:
Запомнить :

Ваш IP: 3.12.152.102

Случайные конструкторы

Случайные движки

Случайные статьи

Статистика
Онлайн всего: 4
Гостей: 4
Пользователей: 0

На сайте были:

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