我正在尝试创建一个 Unity 2018 1.4f1
项目,该项目将在按下特定键时播放特定的动画,并在同时按下同一键时播放动画的副本。一审仍在播放。
这个想法是,用户可以键入一个单词,并且他们输入的每个字母都会播放一个动画来代表该字母。
我尝试使用Animation.PlayQueued
之类的动画来排队动画,但没有成功。
这是我的基本代码的样子(这只是尝试在按键上播放动画):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AnimateKey : MonoBehaviour
{
public Animator animator;
// Use this for initialization
void Start()
{
animator = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown("1"))
{
animator.Play("Take1");
}
}
}
任何帮助将不胜感激。
答案 0 :(得分:0)
您可以使用GetCurrentAnimatorStateInfo
检查Animator
是否已经处于某种状态,并且仅在IsName
返回false
时进行呼叫:
if (!animator.GetCurrentAnimatorStateInfo(0).IsName("Take1"))
{
animator.Play("Take1");
}
注意:GetCurrentAnimatorStateInfo
的参数是图层索引。因此,当您处理多层时,必须采用该方法。
但是对于多个并行动画,您可能想检出Animation
组件。
您不必处理States
,而只需启动和停止AnimationClip
。你会比做
public Animation animation;
private void Awake()
{
animation = GetComponent<Animation>();
}
private void Update()
{
if(!Input.GetKeyDown("1")) return;
if(animation.IsPlaying("Take1")) return;
animation.Play("Take1");
}