Конечный автомат (FSM) — это абстрактный автомат, который может находиться ровно в одном из конечного числа состояний в каждый момент времени. любое время. Автомат может переходить из одного состояния в другое в ответ на некоторые входы; переход из одного состояния в другое называется переходом. FSM определяется списком своих состояний, начальным состоянием и входными данными, которые запускают каждый переход.

Проще говоря, у вас есть конечное число состояний, в которых вы можете находиться, и вы хотите переходить между ними.

FSM полезны во многих ситуациях, анимациях, ИИ или системах передвижения, и это лишь некоторые из них.

Выполнение

Я собираюсь взглянуть на состояние передвижения.

Чистый код.

Чтобы определить, в каком состоянии я нахожусь, я буду использовать Enum.

Теперь я должен позаботиться о действиях.

Теперь я должен позаботиться о вызове этих методов из метода обновления.

Использование компонента Animator.

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



Locomotion FSM можно упростить до переменной для кэширования компонента аниматора и метода обновления для передачи переменных, которые используются для управления состоянием.

Теперь на стороне Unity я создаю Animator Controller для FSM и добавляю его в игровой объект.

Я редактирую контроллер аниматора и добавляю в него состояния.

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

Я настроил переход в аниматоре.

Теперь очень легко следить за кодом и точно видеть, что происходит. Мы даже можем наблюдать, как он меняет свое состояние в аниматоре. Он меняет состояния, как и предполагалось / Несмотря на то, что моя фальшивая гравитация заставляет его почти мгновенно возвращаться в заземленное состояние, если вы моргнете, вы пропустите его, переходя в состояние «В воздухе».

Код можно найти на моей странице Git Hub.



GitHub — JamesLaFritz/Design-Patterns-For-Unity at release-StateMachines
Сообщить об ошибке · Функция запроса демонстрирует различные шаблоны проектирования программирования в Unity. Есть много разных…github.com»