Unity3D Animator控制参数和添加事件

Posted MrBlue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D Animator控制参数和添加事件相关的知识,希望对你有一定的参考价值。

Animator控制参数和添加事件

 

 

using UnityEngine;
using System.Collections;

public class AniControl : MonoBehaviour {

	public bool IsRolling = false;
	public bool IsDead = false;
	public bool IsJump = false;
	public float Direction = 0.5f;
	public Animator Anitor;
	public float Velocity = 0f;

	public int IsRollingId =-1;
	public int IsJumpId = -1;
	public int IsDeadId = -1;

	AnimatorOverrideController overrideController;

	void Awake()
	{
		//获得哈希id
		IsRollingId = Animator.StringToHash ("IsRolling");
		IsDeadId = Animator.StringToHash ("IsDead");
		IsJumpId = Animator.StringToHash ("IsJump");

		//要动态修改Animator 需要给OverrideController
		overrideController = new AnimatorOverrideController();  
		overrideController.runtimeAnimatorController  = Anitor.runtimeAnimatorController;  
	}

	// Use this for initialization
	void Start () {
		
		var runClip = overrideController["Run"];  
		Anitor.runtimeAnimatorController = overrideController;  

		//动态添加事件
		AnimationEvent aEvent1 = new AnimationEvent();  
		aEvent1.time           = runClip.length;  
		aEvent1.functionName   = "OnOpenComplete";   
		aEvent1.stringParameter = runClip.length.ToString ();
		runClip.AddEvent(aEvent1);  
	}
	
	// Update is called once per frame
	void Update () {

		if (Input.GetKey (KeyCode.W)) {
			Velocity = 1.0f;
		} else {
			Velocity = 0f;
		}
	   
		if (Input.GetKey (KeyCode.Space)) {
			IsJump = true;
		} else {
			IsJump = false;
		}
		if (Input.GetKey (KeyCode.A)) {
			Direction = 0;
		} else if (Input.GetKey (KeyCode.D)) {
			Direction = 1;
		} else {
			Direction = 0.5f;
		}


		Anitor.SetFloat ("Velocity",Velocity);
		Anitor.SetBool (IsRollingId,IsRolling);
		Anitor.SetBool (IsDeadId,IsDead);
		Anitor.SetBool (IsJumpId,IsJump);
		Anitor.SetFloat ("Direction",Direction);

	}

	void OnOpenComplete(string str)
	{
		Debug.Log ("OnOpenComplete="+str);
	}
}

  

以上是关于Unity3D Animator控制参数和添加事件的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D日常开发Unity3D中Animation和Animator动画的播放暂停倒放控制

unity3d学习笔记-动画(2.控制动画与Animator Controller)

Unity动画系统Animator动态添加事件

Unity3D之Mecanim动画系统学习笔记:Animator Controller

Unity3d 动画专题

animator播放控制