Unity之Animation Clip的使用
Posted winds_tide
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity之Animation Clip的使用相关的知识,希望对你有一定的参考价值。
Animation Clip的属性
Motion
分配给此状态的动画剪辑
Speed
动画的默认速度
Multiplier
控制速度的乘数,如果要使用需要勾选的Parameter选中配合的参数float类型
Motion Time
运动的时间,如果要使用需要勾选的Parameter选中配合的参数float类型
Mirror
是否为状态生成镜像,仅适用于人形动画,如果要配合参数使用选中旁边的Parameter关联参数,参数是bool类型
Cycle Offset
循环偏移时间,如果要配合参数使用选中旁边的Parameter关联参数,参数是float类型
Foot IK
是否遵循Foot IK,适用于人形人形动画
Write Defaults
AnimatorStates 是否为其运动执行未动画化的属性写回默认值。
Solo和Mute
仅播放该过渡和禁用过渡
Solo和Mute如果一起选择,Mute优先执行
Add Behaviour:添加状态机行为脚本
动画过渡
可以在这里为动画过渡改名,如果不改
对应的名字就是
“某一状态名”->“某一状态名”
Has Exit Time
是否有退出时间,如果勾选,当切换动画时,动画一定是播放到下方的Exit Time(百分比)的时间时才过渡到下一个动画
Settings
Exit Time:退出时间,当选择上方的Has Exit Time时,该值决定了过渡生效的确切时间。该值可以大于1,如果小于1,比如0.85,表示当动画播放到了85%的动画时,就会过渡。如果大于1,比如4.5,那么动画将循环4.5次后过渡到下一个动画
Fixed Duration:选中后,下方的Trnaition Duration过渡持续时间将以秒为单位解读过渡时间,如果不选中,则以百分比解读过渡时间
Transition Duration(s/%):过渡持续时间,相当于从该状态切换到下一状态的过渡动画持续的时间,对应下方两个蓝色箭头包裹区域
Transition Offset:过渡到目标状态的起始播放的时间偏移。如果是0则从目标状态开头开始播放,如果是0.5则从目标状态的一半开始播放
你可以理解为切入下一个状态的切入点
Interruption Source:该过渡中断的情况
- None:不在添加任何过渡
- Current State:将当前状态过渡排队
- Next State:使下一个状态的过渡进行排队
- Current State Then Next State:将当前状态的过渡和下一个状态的过渡都依次排队
- Next State Thne Current State:将下一状态的过渡和当前状态的过渡依次排队
Ordered Interruption:当前过渡是否可在不考虑顺序的情况下被其它过渡中断 。
选中时,找到有效过渡或当前过渡时,会中断
不选中时,找到有效过渡,会中断
Conditions:过渡条件
如果没有过渡条件,只会考虑Exit Time
AnyState和任意动画之间连线
Can Transition To self:是否过渡到自己
Preview source state:预览各种过渡状态
可以查看从任意状态切换到当前状态的过渡效果
Unity 使用Animation Clip(动画片段) 对Animation Rig的Rig Weight (rig权重) 进行调整,出现无法调整的问题,及解决方法
问题:Animator播放Animation Clip,权重无法修改
如图,Animation Clip当中对Rig的权重有调整:
但在运行当中播放该动画片段无法对权重进行修改
原因分析:
我发现在运行阶段,点击Preview后再关闭Preview,动画能够对权重进行正常修改,但仍然无法确定原因。
在网上搜索后发现有相同问题的帖【链接】:
不同的是他是通过直接播放animation里的animation clip,我这里是用了animator来控制播放
于是我找到了unity技术人员的回复:
虽然问题仍然无法解决,但技术人员提到了:点击preview的时候,animator是关闭的,而关闭preview,animator会重新开启。
解决方案:
我根据自己拿到的线索,在播放动画之前,重启animator:
public Animator RigController;
...
RigController.enabled = false;//
RigController.enabled = true;//
...
RigController.Play("weapon_idle_" + weapon.weaponName);
在运行的时候发现权重能够正常修改了,且只需要重启一次animator,之后的动画都能够正常修改。
(方法仅供参考,如果有好办法赶紧告诉我!!!!!)
以上是关于Unity之Animation Clip的使用的主要内容,如果未能解决你的问题,请参考以下文章
Unity 使用Animation Clip(动画片段) 对Animation Rig的Rig Weight (rig权重) 进行调整,出现无法调整的问题,及解决方法
Unity3D中通过Animator动画状态机获取任意animation clip的准确播放持续时长
unity 3d中,Animation clip播放到第一个Animation Event事件就停了下来,为啥?