Как запустить последующие анимации только после завершения предыдущей анимации в Unity? - PullRequest
0 голосов
/ 20 декабря 2018

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

Я пытался следовать этому: Подождите, пока анимация не завершится в unity3d

Но в настоящее время я сталкиваюсь с ошибкой, говорящей "Нет аргументовучитывая, что это соответствует обязательному формальному параметру 'animation' для элемента selected_grill.WaitForAnimation (Animation) '".

Я все еще очень новичок в этом.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;



public class reduced_grill : MonoBehaviour {

    public GameObject grill_standard;
    public Animator minimal_grill;
    public GameObject reduced_grill_obj;
    public GameObject grill_price;





    private IEnumerator WaitForAnimation(Animation animation)
    {
        do
        {
            yield return null;
        } while (animation.isPlaying);
    }




    IEnumerator OnMouseOver()
    {

           minimal_grill.GetComponent<Animation>();
           yield return WaitForAnimation();

        if (Input.GetMouseButtonUp(0) && minimal_grill.GetCurrentAnimatorStateInfo(0).IsName("none"))
        {
            grill_standard.SetActive(true);

            reduced_grill_obj.SetActive(true);
            minimal_grill.enabled = true;
            minimal_grill.Play("minimal_grill_red", -1, 0f);



            CallLater.DoAfter(5, x =>
            {
                grill_price.SetActive(true);
            });


        }

        if (Input.GetMouseButtonUp(0) && minimal_grill.GetCurrentAnimatorStateInfo(0).IsName("minimal_grill_red"))

        {


            minimal_grill.enabled = true;
            minimal_grill.Play("minimal_grill_exit", -1, 0f);
            grill_price.SetActive(false);
            CallLater.DoAfter(8, x =>
            {
                reduced_grill_obj.SetActive(false);

            });

        }

        if (Input.GetMouseButtonUp(0) && minimal_grill.GetCurrentAnimatorStateInfo(0).IsName("minimal_grill_exit"))
        {
            grill_standard.SetActive(true);

            reduced_grill_obj.SetActive(true);
            minimal_grill.enabled = true;
            minimal_grill.Play("minimal_grill_red", -1, 0f);

            CallLater.DoAfter(5, x =>
            {
                grill_price.SetActive(true);
            });

        }

    }


}

Редактировать

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

enter image description here

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Вы можете добавлять анимационные события в конце каждой анимации, вызывая друг друга.Взгляните на:

События анимации Unity

0 голосов
/ 20 декабря 2018

Используйте AnimationController и используйте визуальный редактор для создания анимационных маршрутов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...