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:该过渡中断的情况

  1. None:不在添加任何过渡
  2. Current State:将当前状态过渡排队
  3. Next State:使下一个状态的过渡进行排队
  4. Current State Then Next State:将当前状态的过渡和下一个状态的过渡都依次排队
  5. 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事件就停了下来,为啥?

unity 动画系统不会用

SIKI_Unity_2_入门_通过实例学习游戏的存档和读档

Unity Animation动画倒播 为什么要获取时间长度啊?