9

Делаю игру на Unity3d. Эпизод 6: Машина состояний

Здравствуйте, дорогие Пикабушники и Пикабушницы!

Закончился мой отпуск в Сиродиле, и я нашел время сделать еще один ролик!

Делаю игру на Unity3d. Эпизод 6: Машина состояний Gamedev, Инди игра, Unity, Инди, Компьютерные игры, Программирование, Разработка, IT, IT юмор, Паттерны, Indiedev, Unity3D, Видео, Короткие видео, YouTube, Длиннопост

Мой проект сражается с Oblivion за право получить мое внимание. Фото в цвете.

На этот раз я покажу фичу, которая помогает мне реализовывать различное поведение у игровых объектов - составную машину состояний!

Для использования стейт машины нужно прикрепить к игровому объекту специальный компонент CompositeStateMachineComponent.

Делаю игру на Unity3d. Эпизод 6: Машина состояний Gamedev, Инди игра, Unity, Инди, Компьютерные игры, Программирование, Разработка, IT, IT юмор, Паттерны, Indiedev, Unity3D, Видео, Короткие видео, YouTube, Длиннопост

Видишь суслика?

Вы могли заметить, у компонента нет видимых полей. Но они есть. И чтобы до них добраться, нужно нажать кнопку открытия редакторе стейт машины.

Как я уже говорил - стейт машина составная. И в данном случае настроены три вложенных машины состояний:

Делаю игру на Unity3d. Эпизод 6: Машина состояний Gamedev, Инди игра, Unity, Инди, Компьютерные игры, Программирование, Разработка, IT, IT юмор, Паттерны, Indiedev, Unity3D, Видео, Короткие видео, YouTube, Длиннопост

Можно добавлять любое количество конечных автоматов.

Нажав на кнопку стейт машины мы открываем окно с её настройками:

Делаю игру на Unity3d. Эпизод 6: Машина состояний Gamedev, Инди игра, Unity, Инди, Компьютерные игры, Программирование, Разработка, IT, IT юмор, Паттерны, Indiedev, Unity3D, Видео, Короткие видео, YouTube, Длиннопост

Красота

Окно использует Graph API, для создания графа состояний с переходами между ними.

В прошлых роликах я рассказывал, что поведение игровых объектов определяется его активными компонентами. И суть состояния в том, что оно включает какие-то компоненты, тем самым активируя новое поведение. В каждом состоянии мы можем настроить список включаемых им компонентов:

Делаю игру на Unity3d. Эпизод 6: Машина состояний Gamedev, Инди игра, Unity, Инди, Компьютерные игры, Программирование, Разработка, IT, IT юмор, Паттерны, Indiedev, Unity3D, Видео, Короткие видео, YouTube, Длиннопост

Вот такой вот рубильник!

А чтобы настроить переходы между состояниями, надо кликнуть на линию, связывающую их, и открыть окно редактирования условий переходов:

Делаю игру на Unity3d. Эпизод 6: Машина состояний Gamedev, Инди игра, Unity, Инди, Компьютерные игры, Программирование, Разработка, IT, IT юмор, Паттерны, Indiedev, Unity3D, Видео, Короткие видео, YouTube, Длиннопост

В этом окне можно настраивать условия переходов между состояниями и объединять их в группы.

А в игровом режиме редактор позволяет отслеживать текущее состояние объекта в реальном времени:

Подробнее я все разбираю в своем ролике. А если у вас возникнут вопросы по моему проекту или в общем по разработке игр в Unity, смело пишите их в комментарии!

Приятного просмотра!

Больше постов читайте по тегу «Программирование». А если хотите изучить новую профессию, посмотрите актуальные курсы от проверенных школ с реальными отзывами на сайте Пикабу Курсы.

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"