我创建了一个名为AnimationController
的类,我遇到了问题。当我按space
时,它会触发Jump
中的Animator
动画,但它会播放两次。我无法弄清楚它为什么会这样做。有什么更好的方法可以解决这个问题?
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Animator))]
public class AnimationController : MonoBehaviour {
Animator animator;
AnimatorStateInfo baseLayer;
void Start() {
animator = GetComponent<Animator>();
baseLayer = animator.GetCurrentAnimatorStateInfo(0);
}
void Update () {
if(Input.GetButton("Jump") && !baseLayer.IsName("Jump")) {
animator.SetTrigger("Jump");
}
}
}
答案 0 :(得分:4)
我是Unity的新手,但我怀疑这是因为您使用的是GetButton
而不是GetButtonDown
或GetButtonUp
。
从文档中,GetButton
:
按住buttonName标识的虚拟按钮时返回true。
所以,如果你持有空格键两帧(即使你按了一次,物理动作需要的时间超过一帧),那么它会发射两次。如果你把它保持的时间超过那个时间,就会继续射击。
如果您改为使用GetButtonDown
或GetButtonUp
,则只应点击一次,对于注册印刷机的确切帧。
在用户按下buttonName标识的虚拟按钮的框架中返回true。