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);
    	}
    }
    

      

  • 相关阅读:
    BZOJ2809: [Apio2012]dispatching
    BZOJ1455: 罗马游戏
    可并堆试水--BZOJ1367: [Baltic2004]sequence
    可并堆模板
    Codeforces870F. Paths
    Codeforces913F. Strongly Connected Tournament
    一练Splay之维修数列第一次
    Codeforces913E. Logical Expression
    Codeforces700C. Break Up
    可持久化KMP
  • 原文地址:https://www.cnblogs.com/mrblue/p/7257718.html
Copyright © 2011-2022 走看看