Comments 7
Возможно, глупый вопрос, но все же — а какой use-case у этого в юнити? Стейт машина для анимаций есть в аниматоре, а больше на ум ничего не приходит. Можете привести реальный пример?
Стейт машину в аниматоре можно использовать не только для анимаций, а в принципе, для чего угодно. В пятой версии у неё, плюс ко всему, добавится куча новых событий, при входе/выходе из стейта и т.п., думаю что желание и необходимость писать собственные сильно уменьшится
Простой пример: дверь. Состояния и переходы: стоит (удар игрока по двери) падает (остановка падения) лежит (таймер) destroy. На мой взгляд вполне себе реальный кейс для подобной стейт машины. Каких либо анимаций нет (таймер, разве что), основная логика — в расчете условий переходов. С этим аниматор не помогает, все равно придется все рассчитывать в скрипте, и передавать потом результат в аниматор. Так что на мой взгляд, аниматор тут просто overkill. А учитывая, что сейчас с ним слегка неудобно работать из кода…
А можете привести пример когда машина состояний не используется в играх?
Почему у Вас два компонента с названием «Timer Translation»? Переименуйте их во что-нибудь вроде «Timer Translation (Move Left)». Иначе как Вы выбираете их при настройке состояния? И зачем для состояний «Move Left» и «Move Right» нужны разные классы? Нельзя просто создать в объекте два компонента-скрипта типа State с разными названиями?
У компонентов же название — это имя скрипта, из-за чего и нужны отдельные классы для MoveLeft и MoveRight. Аналогично, если я захочу переименовать TimerTransition, нужно будет унаследовать от него два класса с именами TimerTransitionMoveLeft, TimerTransitionMoveRight. Но в примере перехода всего два, запутаться довольно сложно, на мой взгляд, поэтому и не стал так делать.
Еще, вместо наследования, можно добавить в скрипты отдельное поле Title, куда и вводить название состояния или перехода (похоже сделано в PlayMaker для состояний), но я хотел избавиться от всего лишнего.
Еще, вместо наследования, можно добавить в скрипты отдельное поле Title, куда и вводить название состояния или перехода (похоже сделано в PlayMaker для состояний), но я хотел избавиться от всего лишнего.
Sign up to leave a comment.
Еще одна простая стейт машина для Unity