Как мне создать этот анимационный переход? - PullRequest
1 голос
/ 13 октября 2019

Я работаю с 3D-аватаром, и я впервые работаю с анимацией. Я уже сделал один, который идет от простой анимации к другой анимации. Он выполняет переход, когда значение ползунка ниже 40, вот код:

public Slider barraAlimento;
void Start()
{
    anim = GetComponent<Animator>();
}
void Update()
{
    if (barraAlimento.value <= 40)
    {
        anim.SetBool("IrHambriento", true);
    }
    else
    {
        anim.SetBool("IrHambriento", false);
    }
}

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

 public Button botonManzana;
 void Start()
 {
     anim = GetComponent<Animator>();
     botonManzana.onClick.AddListener(ButtonManzanaClicked);
 }
 void ButtonManzanaClicked()
 {
     anim.SetBool("IrComiendo", true);
     anim.SetBool("IrComiendo", false);
 }

Коробки и стрелки такие, если это полезная информация.

Анимационный переход

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

это, вероятно, происходит, потому что в:

void ButtonManzanaClicked()
{
    anim.SetBool("IrComiendo", true);
    anim.SetBool("IrComiendo", false);
}

вы устанавливаете его в значение false сразу после того, как установите его в значение true.

Попробуйте добавить только anim.SetBool("IrComiendo", true); в событие нажатия кнопкии anim.SetBool("IrComiendo", false); только когда вы хотите, чтобы он вернулся к анимации «Хамбриенто»

РЕДАКТИРОВАТЬ:
попробуйте сделать это:

изменить «IrComiendo» для запуска (только чтобы ненеобходимо изменить его значение на false)
OBS: используйте anim.SetTrigger("IrComiendo"); для его вызова

установите соединения, как на рисунке:

*в соединении нет необходимости, если невозможно, чтобы значение ползунка, которое все еще было меньше 40 после нажатия кнопки

**, установите это соединение, если хотите, чтобы оно пошло в Comiendo, даже если оно не hambriento

OBS: в методе button вам просто нужно изменить значение ползунка и вызвать "IrComiendo"

надеюсь, это помогло

0 голосов
/ 13 октября 2019

Я полагаю, что вы ищете триггер , а не bool.

Измените значение bool в вашем аниматоре с Boolean на Trigger и измените код на ...

void ButtonManzanaClicked() 
{
    anim.SetTrigger("IrComiendo");
}

Это будет происходить каждый раз, когда вы «запускаете» триггер, как единовременная вещь, для которой не требуется логическое значение true -> false для сброса, как вы пытаетесь в этом коде.

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

...