/***
*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。
}