Version: 2021.3
状态机基础
状态机过渡

动画参数

动画参数是在 Animator Controller 中定义的变量,可从脚本访问这些变量并向其赋值。这是脚本控制或影响状态机流程的方法。

例如,可通过动画曲线更新参数的值,然后从脚本访问参数以便可改变音效的音高(就像它是一段动画一样)。同样,脚本可设置被 Mecanim 拾取的参数值。例如,脚本可设置参数来控制混合树

可使用 Animator 窗口的 Parameters 部分来设置默认参数值(可在 Animator 窗口的右上角进行选择)。这些参数可分为四个基本类型:

  • Integer - 整数
  • Float - 带小数部分的数字
  • Bool - true 或 false 值(由复选框表示)
  • Trigger - 当被过渡使用时,由控制器重置的布尔值参数(以圆形按钮表示)

可使用以下 Animator 类中的函数,从脚本为参数赋值:SetFloatSetIntegerSetBoolSetTriggerResetTrigger

以下是基于用户输入和碰撞检测而修改参数的脚本示例。

using UnityEngine;
using System.Collections;

public class SimplePlayer : MonoBehaviour {
    
    Animator animator;
    
    // 使用此函数进行初始化
    void Start () {
        animator = GetComponent<Animator>();
    }
    
    // 每帧调用一次 Update
    void Update () {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        bool fire = Input.GetButtonDown("Fire1");

        animator.SetFloat("Forward",v);
        animator.SetFloat("Strafe",h);
        animator.SetBool("Fire", fire);
    }

    void OnCollisionEnter(Collision col) {
        if (col.gameObject.CompareTag("Enemy"))
        {
            animator.SetTrigger("Die");
        }
    }
}


状态机基础
状态机过渡