Конечный автомат (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»