Unity Animations

本文关键字:Animations Unity | 更新日期: 2023-09-27 17:58:55

我正试图根据关键输入使用脚本更改角色动画,但Unity似乎只播放默认的"站着空闲"动画,偶尔切换到"蹲着空闲",是有不同的方法来处理动画,还是我只是做错了脚本?这是我的脚本,因为它目前是

using UnityEngine;
using System.Collections;
public class CharacterControl : MonoBehaviour {
    private Animator animator;
    public bool crouched;
    private string sc;
    // Use this for initialization
    void Start () {
        animator = GetComponent<Animator> ();
    }
    // Update is called once per frame
    void Update () {
        if (crouched == true) {
            sc = "crouch";
        } else {
            sc = "standing";
        }
        animator.Play (sc + "_idle");
        if (Input.GetButton ("Fire3")) {
            if (crouched == false) {
                crouched = true;
            } else {
                crouched = false;
            }
        }
    }
}

Unity Animations

尝试更换

if (Input.GetButton ("Fire3")) {
    if (crouched == false) {
        crouched = true;
    } else {
        crouched = false; 
    }
}

带有

if (Input.GetButton ("Fire3")) {
    crouched = true;
} else {
    crouched = false;
}

现在,当你按下"Fire3"按钮时,你的角色应该蹲下,当你松开它时,他/她应该再次站起来

还有一个建议:将另一个代码放在函数中(if (crouched == true) ... animator.Play (sc + "idle");)这个代码之后(Input.GetButton检查)。这样,你的角色应该立即开始蹲在按下按钮的同一帧;否则,他/她将在之后帧


解释

当您按下(在点击或触摸的中间)按钮每帧时,Input.GetButton将返回true。每次调用Update(大约1/60秒),您的代码都会检查您是否按下,并切换crouched。当你点击/点击按钮时,你可能会按下几帧,所以crouched会从true切换到false,来回切换几次。在某些情况下(当按下奇数帧时),crouched将被切换,但在其他情况下(按下偶数帧时)crouched将保持单击按钮之前的状态,防止角色蹲下或站着(如果他之前蹲下的话)。

来源:API官方:Input.GetButton

我强烈建议使用动画状态,并在获得输入时从一个状态转换到另一个状态。查看我的答案:部分运行的Unity 2D动画

是的,您可以执行类似的切换操作

void Update()
{
   if(Input.MouseButtonDown(2))
  {
    crouched = true;
  }
  if(Input.MouseButtonUp(2))
  {
    crouched  = false;
  }
}

您可以尝试以下代码:

crouched = Input.GetButtonDown("Fire3") ? true : false;