Animator Controller 动画控制器,
接之前的Blog→这里,
这里从Animator的UI讲起,
动画控制器是怎么控制动画播放的呢?
假设不使用脚本,Animator Controller了提供了4种Parameter来供控制流程
这4个类型动得参数分别是Float、Int、Bool、Trigger
设置参数后如何使用?
点击transition,查看Inspector,里面有个Conditions,可以通过点击+号,增加参数,
假设Bool型参数,设置True or False就会告诉这个transition什么时候执行。
额外提醒一下Has Exit Time这个东西,如果勾选,那么就要等到整个单动画播放完成,才会播放下一个动画,
不勾选,就是立即转换,默认不勾选Has Exit Time。
脚本控制方法是
Animator.SetBool(参数名称,布尔值);
讲一下其它3个参数,
先说float,这个函数有4个重载
public void SetFloat(string name, float value);
public void SetFloat(string name, float value, float dampTime, float deltaTime);
public void SetFloat(int id, float value);
public void SetFloat(int id, float value, float dampTime, float deltaTime);
一般来说,我们用到的是这个API:
Animator.SetFloat("Speed",2.0f);
但是这个还有一个重载的方法,叫做:
Animator.SetFloat(string name,float value,float dampTime,float deltaTime)
dampTime: 用 dampTime 长的时间,将 我们设置的叫做 name 的 float类型 的值由 原本的值 改变到给定的 value 值。
换句话说,dampTime是允许参数达到value的时间,你可以想象成 技能需要充能,
充能完成是100,但是我不允许你一下子充能完成,即float立刻变成100,
所以我需要你在dampTime的时间内,慢慢变成value的值
注意:是按百分比匀速变化的。
deltaTime:两次执行该方法的时间间隔。(因为这个方法会每 deltaTime 执行一次,直到 name = value)
deltaTime参数一般默认使用Time.deltaTime。什么是deltaTime请看→这里。
另外Animator Controller是可以有多个Layer的,
layer就是包含的State的集合,默认使用的是BaseLayer,一般情况下只有一个layer就够了。
layer的出现,个人认为是为了逻辑更加清晰,比如FPS游戏,一般来讲,上半身的动画和下半身是分开的,下半身用BaseLayer并且权重为1(最高),上半身有开
枪、换弹的动画,为了不干预移动,权重或小于1。
至于混合方式:
有Override和Additive,
是想要覆盖还是添加动画,自己选。
关于Avatar Mask:
直接翻译过来是替身遮罩,用过FLASH或PS软件的应该知道什么叫遮罩层,
Avatar Mask就像面纱一样屏蔽掉某些部位的动画,
比如你只需要上半身的动画的时候,你就要屏蔽掉下半身的所有动作。
什么是Avatar Mask看→这里。
我希望看到的是上半身播放攻击动画,两条腿走路的动画,
给New Layer添加 Avatar Mask,遮挡New Layer中角色的上半身动画。
创建 Avatar Mask 命名为 RunMask,选中 RunMask 查看 Inspector 面板
补充:
Update Mode:更新模式:Normal表示使用Update进行更新,Animate Physics表示使用FixUpdate进行更新(一般用在和物体有交互的情况下),Unscale Time表示无视timeScale进行更新(一般用在UI动画中)。
Culling Mode:剔除模式:Always Animate表示即使摄像机看不见也要进行动画播放的更新,Cull Update Transform表示摄像机看不见时停止动画播放但是位置会继续更新,Cull Completely表示摄像机看不见时停止动画的所有更新。
参考文档:
Today's comments have reached the limit. If you want to comment, please wait until tomorrow (UTC-Time).
There is 19h00m06s left until you can comment.