Как изменить изображение после завершения анимации в Unity 3D - PullRequest
0 голосов
/ 03 октября 2018

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

Scrrenshot of Animation

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Взгляните на «Поведение конечного автомата» и их метод «OnStateExit»

public Animator Anim;

void Update()
{

    if (Input.GetMouseButtonDown(0))
    {
        //Play Animation On CLick
        Anim.Play("YourAnimation");
    }

}

На поведении конечного автомата (добавьте это поведение в состояние анимации в Animator)

override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
    //Change Sprite Code
}

См.

0 голосов
/ 03 октября 2018

Вы можете переопределить управление Animator на спрайте, установив спрайт в LateUpdate().Самый простой, но, возможно, не самый эффективный способ сделать это:

  1. Добавить событие анимации в конец вашей анимации, которое вызывает функцию.Давайте назовем это AnimationComplete().
  2. Внутри AnimationComplete() установите флаг.
  3. Внутри LateUpdate() проверьте, установлен ли флаг.Если это так, измените ваш спрайт.

    public Sprite mySprite;
    public GameObject myObject;
    bool animationIsComplete = false;
    
    void LateUpdate()
    {
        if(animationIsComplete)
        {
            myObject.GetComponent<SpriteRenderer>().sprite = mySprite;
        }
    }
    
    //Called via animation event
    public void AnimationComplete()
    {
        animationIsComplete = true;
    }
    
0 голосов
/ 03 октября 2018

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

Для вашего конкретного случая вам нужно настроить одно состояние на результат, которыйты хочешь.Таким образом, вы должны создать одно состояние для случая, когда кубик поднимается на 1, одно состояние для повышения на 2 и т. Д. Затем вы используете параметр анимации типа int, чтобы сообщить аниматору о результате, используя Animator.SetInteger .Ваши переходы будут тогда иметь Условия на основе числа, которое представляет состояние результата.Поэтому для первого состояния условие будет «Параметр анимации равен 1».

Вот наглядное пособие: enter image description here

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