版本:Unity 6 (6000.0)
语言:英语
动画状态
状态机过渡

动画参数

动画参数是在动画控制器通过动画层、动画状态机和动画混合树控制动画,由动画参数控制。同一个动画控制器可以被具有动画组件的多个模型引用。 更多信息
参见 术语表
中定义的变量,可以通过脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性并以任何您喜欢的方式响应用户输入。 更多信息
参见 术语表
访问和赋值。这就是脚本如何控制或影响状态机动画控制器中的一组状态,角色或动画化的游戏对象可以处于这些状态,以及在这些状态之间进行的一组过渡,以及用于记住当前状态的变量。可用的状态将取决于游戏玩法的类型,但典型状态包括空闲、行走、跑步和跳跃等。 更多信息
参见 术语表
的流程。

例如,参数的值可以通过动画曲线更新,然后从脚本中访问,这样,声音效果的音调就可以像动画一样变化。同样,脚本也可以设置参数值,以便由 Mecanim 接收。例如,脚本可以设置参数来控制混合树

默认参数值可以使用动画窗口在动画窗口中可视化和编辑动画控制器的窗口。 更多信息
参见 术语表
中的参数部分设置,可以在动画窗口的右上角选择。它们可以是四种基本类型

  • 整数 - 整数
  • 浮点数 - 带小数部分的数字
  • 布尔 - 真或假值(由复选框表示)
  • 触发器 - 布尔参数,当被过渡使用时会被控制器重置(由圆形按钮表示)

可以使用 Animator 类中的函数从脚本为参数分配值:SetFloatSetIntegerSetBoolSetTriggerResetTrigger

以下是一个根据用户输入和碰撞当物理引擎检测到两个游戏对象的碰撞器发生接触或重叠时,就会发生碰撞,前提是至少有一个游戏对象具有刚体组件并且处于运动状态。 更多信息
参见 术语表
检测修改参数的脚本示例。

using UnityEngine;
using System.Collections;

public class SimplePlayer : MonoBehaviour {
    
    Animator animator;
    
    // Use this for initialization
    void Start () {
        animator = GetComponent<Animator>();
    }
    
    // Update is called once per frame
    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");
        }
    }
}


动画状态
状态机过渡