返回介绍

动画参数

发布于 2021-06-19 18:03:25 字数 1729 浏览 773 评论 0 收藏 0

动画参数 (Animation Parameters) 是在动画系统中定义的变量,但也可以是脚本的访问值和分配值。例如,参数值可由动画曲线更新,然后从脚本访问,因此,比如说,音效的音高就像动画一样会改变。同样,脚本可以设置 Mecanim 选择的参数值。例如,脚本可以设置一个参数来控制混合树

默认参数值可以使用“动画器 (Animator)” 窗口左下角的参数 (Parameters) 小部件来设置。它们有四种基本类型:

  • 向量 (Vector) – 空间中的一点
  • 整数 (Int) – 一个整数
  • 浮点数 (Float) – 带有小数部分的一个数
  • 布尔 (Bool) – true 值或 false 值

参数可以是使用动画器 (Animator) 类中函数的脚本的分配值:SetVector、SetFloat、SetInt 和 SetBool。

以下是基于用户输入修改参数的脚本示例

using UnityEngine;
using System.Collections;


public class AvatarCtrl :MonoBehaviour {

	protected Animator animator;

	public float DirectionDampTime = .25f;

	void Start () 
	{
		animator = GetComponent<Animator>();
	}

	void Update () 
	{
		if(animator)
		{
			//get the current state
			AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);

			//if we're in "Run" mode, respond to input for jump, and set the Jump parameter accordingly. 
			if(stateInfo.nameHash == Animator.StringToHash("Base Layer.RunBT"))
			{
				if(Input.GetButton("Fire1")) 
					animator.SetBool("Jump", true );
			}
			else
			{
				animator.SetBool("Jump", false);				
			}

			float h = Input.GetAxis("Horizontal");
			float v = Input.GetAxis("Vertical");

			//set event parameters based on user input
			animator.SetFloat("Speed", h*h+v*v);
			animator.SetFloat("Direction", h, DirectionDampTime, Time.deltaTime);
		}		
	}   		  
}

(返回动画状态机

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文