zoukankan      html  css  js  c++  java
  • 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);
    	}
    }
    

      

  • 相关阅读:
    【HDU1698】 Just a Hook 【线段树入门】
    【转载】线段树 区间合并 小结
    Codeforces 1138B(列方程枚举)
    Codeforces 1132G(关系转化树+dfn+线段树)
    Codeforces 1132E(转化+dp)
    Codeforces 1132D(二分模拟)
    Codeforces 1131G(dp)
    洛谷1941(dp)
    洛谷2758(字符串dp)
    Codeforces 1143B(思维、技巧)
  • 原文地址:https://www.cnblogs.com/mrblue/p/7257718.html
Copyright © 2011-2022 走看看