我目前在Unity中创建一些(非循环)动画,应该在按下UI按钮时启动。我有四个按钮用于四个动画。目前它的工作原理如下:我按下button1然后播放animation1。如果我然后按button2播放animation2,我可以再次点击button1开始动画1。
现在的情况是:只有当之前播放的另一个动画时,animation1才能再次播放。所以我的问题是:我需要更改以下代码,以便每次按下button1时播放动画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);
}
}
}
动画与过渡和布尔相关联。我将自己定位于本教程: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);
}
}
答案 0 :(得分:0)
您的更新方法在哪里?你怎么称这些虚空方法?
放置具有条件的更新方法以检查单击了哪个按钮。所以像这样:
void Update()
{
if (Input.GetKeyDown("space"))
{
//Play animation.
}
}
编辑:好的,当你按下按钮播放第一个动画,然后再次按下该按钮时,动画已经是真的,所以动画已经播放了。在完成动画制作后,您需要将其设置为false。当你按下其他按钮时,它再次播放的原因是什么。
编辑:尝试这种风格
public void anim1Clicked()
{
animation.Play("anim1");
}