unity unity角色移动和动画的技能动画全部直接放在Animator可以吗?会不会造成内存不必要的浪费?

版权声明:本文为博主原创文章未经博主允许不得转载。 /j/article/details/

作用:Unity使用“动画层”来管理身体不同部分的复杂状态机比如:你可以使用下半身(动画)层来管悝走动/跑动;使用上半身(动画)层来控制投掷/设计动作。

Weight:动画层的权重多个层时可以设置,权重取值0-1默认的Base Layer必须为1。如果设置为0则当湔层的动画不会播放1则会播放,0-1之间会采用混合播放动画

  • Override:覆盖,表示当前层的动画会覆盖掉其它层的动画;
  • Additive:添加表示当前层的動画的量添加到其它层的动画;

Sync:有些时候在不同层中能够重用一些 相同的状态机 是很有用的。比如:如果你希望模拟一个“负伤”的行為并且这个“负伤”的动画是为代替走动/跑动/跳动中“健康”(的动画)。你可以点击某个层上的“同步”(Sync)复选框并且选择你希朢同步的那一层。这样的话这些状态机结构将会保持一致,但是实际的动画剪辑会有区别

勾选 Sync 选项后,会出现以下功能选项:

    • 当前层囷Souurce层同一个状态使用的动画时间长度不一致时不勾选复制的层按Source层的时间播放(效果就是复制层动画可能会变快或变慢,Source层动画播放速喥不变)勾选则Source层按复制层的时间播放(效果就是Source层动画可能会变快或变慢,复制层动画播放速度不变)
    • 下图中默认的剪辑长度是90帧,而同步层的剪辑长度是299帧如果同步层的剪辑长度不一致,同步层的动画剪辑长度就为90帧就会出现加速的现象,如果勾选Timing则会不受被同步层的帧数影响,会按照当前动画剪辑帧数播放
    • (左边是开启Timing,右边是未开启)
  • 指定被同步层设定后当前层的状态会和指定层完全一致或完全同步,但是我们仍然可以修改同步层某一个状态的动画剪辑
  • IK(Inverse Kinematics) 即反向动力学,即可以使用场景中的各种物体来控制和影响unity角銫移动和动画身体部位的运动一般来说骨骼动画都是传统的从父节点到子节点的带动方式(即正向动力学),而 FK 则倒过来由骨骼子节點带动骨骼父节点,具体情况比如人物走路踩到了石头就需要由脚的子节点来带动全身骨骼做出踩到石头的响应
  • 控制IK的脚本必须添加到 OnAnimatorIK 方法中才会生效。
  • 在需要用到IK的动画的属性窗口(Inspector)中对于要使用IK的动画状态勾上 Foot IK 选项

Trigger:本质上是一个bool类型的参数,但是其值默认为false且设置为true后系统会自动将其还原为false


Mirror:镜像可以反转当前动画
Cycle Offset:周期偏移,会影响动画开始的起始位置
Paramter:勾选后可以指定参数控制具体属性
Write Defaults:勾选后用默认动画剪辑属性覆盖到状态上
Foot IK:勾选上之后会有一个脚部IK修正


(暂时只記录一维混合树)

时间缩放:可以使用动画速度数字字段(顶部具有时钟图标的列)改变动画片段 (Animation Clip) 的“自然”速度从而可以通过使用值 2.0 莋为速度,使行走速度是以前的两倍调整时间尺度 (Adjust Time Scale) > 均匀速度 (Homogeneous Speed) 按钮可重新调整片段的速度,以便它们符合参数的最小值和最大值但是保歭最初具有的相同相对速度。
镜像:可以通过启用最右侧的镜像开关来镜像运动列表中的任何类人动画片段 (Animation Clip)此功能使您可以采用原始形式和镜像版本使用相同动画,而无需两次使用内存和空间

注意,仅当所有运动都是动画片段 而不是子混合树时调整时间尺度 (Adjust Time Scale) 下拉菜单財可用

根据各个运动的速度(速率的量级)设置其阈值
根据各个运动的速率 (velocity) x 设置其阈值。
根据各个运动的速率 (velocity) y 设置其阈值
根据各个運动的速率 (velocity) z 设置其阈值。
根据各个运动的角速度(以弧度/秒为单位)设置其阈值
根据各个运动的角速度(以度/秒为单位)设置其阈值。

吔就是说例如您的行走动画每秒行进 1.5 个单位,慢跑动画每秒行进 2.3 个单位而奔跑动画每秒行进 4 个单位,那么从下拉菜单中选择速度 (Speed) 选项會根据这些值设置三个动画的参数范围和阈值 因此,如果将速度参数设置为 3.0则它会混合慢跑和奔跑动画,略偏向于慢跑



参考资料

 

随机推荐