Воспроизведение анимации при нажатии кнопки с условием

Я хочу сделать анимацию меню. В аниматоре содержится 2 анимации. Один из них - анимация открытия, другой - анимация закрытия. Я установил анимацию открытия как состояние по умолчанию и добавил условие между ними. Условие - это параметр типа bool. Я перетаскиваю скрипт, который управляет их поведением и компонентом аниматора, на игровой объект, но когда воспроизводится начальная анимация и игрок нажимает кнопку воспроизведения, параметр становится истинным, но не воспроизводится.

 Animator canvasAnim;

 public Button lvlSelector;
 Button lvlSelector_A;

 // Use this for initialization
 void Start () {
     canvasAnim = GetComponent<Animator>();

     lvlSelector_A = lvlSelector.GetComponent<Button>();
     lvlSelector_A.onClick.AddListener(LevelSelector);

 }
 IEnumerator SlideLevelSelectMenu()
 {

     yield return new WaitForSeconds(1f);
     SceneManager.LoadScene("LevelSelectMenu");
 }

 void LevelSelector()
 {
     canvasAnim.SetBool("clickedclose", true);
     StartCoroutine(SlideLevelSelectMenu());
 }

Аниматор: animator

Игровой объект: gameobject that keeps script

Воспроизводит ли вторую анимацию, когда вы вручную устанавливаете для bool значение true в окне Animator в режиме воспроизведения?

Kashif Siddiqui 10.09.2018 09:36

Также как выглядит окно Аниматора? Какая активная анимация в режиме воспроизведения?

Kashif Siddiqui 10.09.2018 09:37

Первым делом я решил проблему, но это было очень неудобно. Потому что я просто установил публичный аниматор и прикрепил его. Разве это не компонент get "getcomponent" на компоненте, который прикреплен к gameobject? И когда я установил для bool значение true, он играл, но когда игрок нажимал, он превращался в true, но он не играл. Поймите, это было очень неловко, и я до сих пор не понимаю, в чем проблема

Aiden Martinez 10.09.2018 09:55

В общем, для такого перехода лучше использовать Trigger и SetTrigger() вместо bool.

derHugo 10.09.2018 11:16
0
4
151
1

Ответы 1

Эта проблема возникает из-за вашего Animator. Вы должны вызвать Animator на игровом объекте Canvas (не на Menu Manager). Просто измените свой сценарий на это:

void Start () {
 canvasAnim = GameObject.Find("Canvas").GetComponent<Animator>();
 ...
}

Надеюсь, это вам поможет.

Другие вопросы по теме