В настоящее время я создаю некоторые (не зацикленные) анимации в Unity, которые должны запускаться при нажатии кнопки пользовательского интерфейса. У меня есть четыре кнопки для четырех анимаций. В настоящее время это работает так: я нажимаю кнопку 1, а затем анимация 1 играет. Если затем я нажимаю кнопку 2, чтобы воспроизвести анимацию 2, я могу снова нажать кнопку 1, чтобы запустить анимацию 1.
Дело в том, что анимация1 может воспроизводиться снова, только если ранее воспроизводилась другая анимация. Поэтому мой вопрос: что мне нужно изменить в следующем коде, чтобы, например, анимация1 воспроизводилась при каждом нажатии кнопки1?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MultiAnimations : MonoBehaviour {
public Animator cubeAnimator;
public bool anim1;
public bool anim2;
public bool anim3;
public bool anim4;
// Use this for initialization
void Start () {
cubeAnimator.enabled = false;
anim1 = false;
anim2 = false;
anim3 = false;
anim4 = false;
}
public void anim1Clicked ()
{
cubeAnimator.enabled = true;
anim1 = true;
anim2 = false;
anim3 = false;
anim4 = false;
if (anim1 == true)
{
cubeAnimator.SetBool("anim1", true);
cubeAnimator.SetBool("anim2", false);
cubeAnimator.SetBool("anim3", false);
cubeAnimator.SetBool("anim4", false);
}
}
public void anim2Clicked ()
{
cubeAnimator.enabled = true;
anim1 = false;
anim2 = true;
anim3 = false;
anim4 = false;
if (anim2 == true)
{
cubeAnimator.SetBool("anim1", false);
cubeAnimator.SetBool("anim2", true);
cubeAnimator.SetBool("anim3", false);
cubeAnimator.SetBool("anim4", false);
}
}
public void anim3Clicked()
{
cubeAnimator.enabled = true;
anim1 = false;
anim2 = false;
anim3 = true;
anim4 = false;
if (anim3 == true)
{
cubeAnimator.SetBool("anim1", false);
cubeAnimator.SetBool("anim2", false);
cubeAnimator.SetBool("anim3", true);
cubeAnimator.SetBool("anim4", false);
}
}
public void anim4Clicked()
{
cubeAnimator.enabled = true;
anim1 = false;
anim2 = false;
anim3 = false;
anim4 = true;
if (anim4 == true)
{
cubeAnimator.SetBool("anim1", false);
cubeAnimator.SetBool("anim2", false);
cubeAnimator.SetBool("anim3", false);
cubeAnimator.SetBool("anim4", true);
}
}
}
Анимации связаны с переходами и bools. Я ориентировался на этот урок: https://www.youtube.com/watch?v=Q_5FhXF9a3k
РЕШЕНО: Код, представленный в руководстве по YouTube, довольно замысловатый. Вы можете сохранить много строк кода, чтобы просто написать это так:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MultiAnimations : MonoBehaviour {
public Animator cubeAnimator;
// Play Animation 1 - Copy this for the other animations
public void playAnimation1 ()
{
cubeAnimator.Play("animation1", -1, 0f);
}
}