Как я могу внести изменения, которые происходят как часть анимационного клипа? - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу анимировать карту, переворачивающуюся с ее лицевой стороны на заднюю.Обе стороны карты имеют разные спрайты в качестве фона.

У меня есть компонент Animator, прикрепленный к моей карте.Аниматор поворачивает карту на 180 градусов вокруг оси z и изменяет фоновый спрайт, когда он поворачивается на 90 градусов.Это все работает правильно.

Проблема заключается в том, что спрайт возвращается к исходному спрайту после завершения анимационного клипа.Я попытался добавить событие анимации в конец функции события клипа анимации и заставить клип анимации делать GetComponent<SpriteRenderer>().sprite = ..., но это тоже не работает.Даже если я изменю спрайт карты в Unity Inspector, это не сработает (спрайт фактически не меняется).

Вот как выглядит мой аниматор (к анимации Idle не прикреплен клипэто):

enter image description here

Вот как выглядит одна из анимаций:

enter image description here

Есть ли способ, с помощью которого мой аниматор может изменить спрайт моего игрового объекта, а затем заставить игровой объект поддерживать новый спрайт, пока он снова не изменится?Я знаю, что могу сделать это программно через сопрограмму, но я не хочу делать обходной путь, если в этом нет необходимости.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Afaik, вам просто нужно отключить значение Write Defaults для States

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

Так что, если вы отключите его, это состояние будет использовать все текущие значения свойств, которые оно получило из анимаций ранее, вместо неанимированного значения.

0 голосов
/ 14 февраля 2019

Измените режим обтекания анимационного клипа на ClampForever.

https://docs.unity3d.com/ScriptReference/WrapMode.ClampForever.html

...