代码--新版动画

/***

*Title:动画系统

*

*Describe:动画播放-animation//旧版动画Rig/animation Type 选Legcay 

* //新版动画Rig/animation Type 选Humanoid

* //旧版动画添加的组件为Animation,新版动画添加的组件为Animator,

*//新版动画,使用动画控制器,状态机,动画片段,设过渡条件-parameters(参数),过渡条件属性面板中,Condtions(条件)中设置-参数。代码中控制过渡条件的参数来控制动画播放。

*Author:萧非子

*

*DateTime:20170328

*Version:1.0

*/

using UnityEngine;

using System.Collections;

public class AnimiatorControl : MonoBehaviour {   

 //[SerializeField]    

private Animator ani;

void Start () 

       ani = GetComponent();

}

void Update () 

{

//如果动画要原地播放,动画属性面板中 勾选 Apply Root Motion//如果一个动画要立即切换到另一个动画,过渡条件属性面板中,去掉勾选 Han Exit Time       

 if (Input.GetKeyDown(KeyCode.W))   

     {//参数动画SetTrigger("name"),-----Update()中代码控制参数         

   ani.SetTrigger("walk");  

      }

        if (Input.GetKeyDown(KeyCode.H))     

   {            //层动画 SetLayerWeigh(int layIndex,float weight )---Update()中代码控制层权重        

    //第一个参数,层的序号(0-n);0 ,0层不可设置修改,是基本层,1层,2,可修改。。   

    //第二个参数,层的权重(0-1);0,表示不显示,1,表示完全显示。次时只显示默认0层的动画;0.5,表示只显示一半了            ani.SetLayerWeight(1,1); //第一层动画,完全显示             

 ani.SetLayerWeight(2,0); //第二层动画,完全不显示        

       if (Input.GetKeyDown(KeyCode.S))      

  {       

     ani.SetLayerWeight(1, 0); 

       ani.SetLayerWeight(2, 1);  

    }

    }

//层动画+参数动画BOOL//先在第二、第三层分别建一个空状态机(空状态机默认播放为第0层的动画),让空状态机位默认的动画状态机。

//再在第二、第三层建一个动画状态机//设置空状态机与动画状态机的过渡条件,参数BOOL//在Start()中设置权重为1;在Update()中代码控制参数

void Start () 

{

 ani = GetComponent();

ani.SetLayerWeight(1,1);

ani.SetLayerWeight(2,1);

}

void Update()

{

if (Input.GetKeyDown(KeyCode.H))

{

ani.SetBool("hold",true);

ani.SetBool("throw", false);

}

if (Input.GetKeyDown(KeyCode.S))

{

ani.SetBool("hold", false);

ani.SetBool("throw", true);

}

}

//动画融合/遮罩动画Mask--层融合

//层动画融合,第1层权重weight设为1,Mask选择一个Avatar Mask(新建一个Avata Mask,遮罩下半身(红色),下半身不显示);

//融合动画:显示第0层动画的下半身动画,第1层动画的上边身动画。OK。

}

你可能感兴趣的:(代码--新版动画)