找回密码
 立即注册
查看: 304|回复: 0

Unity动画系统——学习笔记

[复制链接]
发表于 2022-6-10 07:51 | 显示全部楼层 |阅读模式
动画文件

文件的保存

保存每个对象的名称,和它的属性值(通常是位移旋转缩放)。Unity通过读取对象名称确定它是否能应用于这个动画。如果名称相同,可以实现动画的复用。
Avatar

Avatar相当于一个替身,A和B都用Avatar绑定骨骼,可以实现不同命名的骨骼,共用一个名称,从而共用一个动画。Humanoid类型将骨骼信息变为Unity的肌肉信息。
Animation Type 动画类型
None无动画 静态物品
Legancy旧版动画
Generic通用动画 如四足动物等不规律的骨骼
Humanoid人形动画 人形骨骼
Avatar Definition 替身定义
No Avatar无替身
Creat From This Model由当前模型的骨骼定义替身
Copy From Other Avatar复制别的替身
Skin Weights 蒙皮权重
可以被几根骨骼控制,默认四根,可Custom自定义
Opitimize Game Objects 优化游戏对象
启用会删除原模型上的骨骼,仅用Avatar,优化空间
Animator组件

Controller 状态机
Avatar 替身
只要一个对象有替身,就会从它和它所有子物体中检索对应骨骼信息,从而播放动画。
Apply Root Motion 使用根运动
以Generic类型为例,绑定时会创建一个根骨骼,用来在K动画时描述动画整体的的位移和旋转等信息。Root Motion即将动画的根骨骼的位移旋转等信息当作对象的位移和旋转等信息,实时改变对象的Transform值。
Humanoid类型则是由Unity自己计算一个center of mass 重心位置,代替根骨骼。
关闭Root Motion时,一个动画记录的是世界空间下对象的位移旋转等信息,使用Root Motion时,动画记录的则是当前帧和下一帧之间相对的位移旋转等信息。而Root Motion是实时改变对象的Transform值的,所以可以使动画连贯播放。如一个0°旋转到90°的动画,循环播放,使用Root Motion后可以一直旋转下去。
OnAnimationMove()方法可用代码代替Apply Root Motion的使用。
Update Mode 动画的刷新模式
Normal跟随update刷新。
Animate Physics跟随fixedupdate刷新。
Unscale Time不随TimeScale变化。
Culling Mode 动画的剔除模式
Always Animate永远播放
Cull Update Transforms不在镜头内时,播放但剔除IK等信息
Cull Completely不在镜头内时,直接不播放,在镜头内重新播放
状态机

分基本动画,混合树,另一个状态机三种。
基本动画

Tag 动画的标签
可以用来检索当前播放动画做判定
AnimatorStateInfo.IsTag();
Speed 动画的播放速度
可以为负值(逆序播放)
不能直接再代码修改,需要乘以Multiplier中设置的属性值。
Motion Time 动画播放的时间
如0.5则播放动画中间点
Mirror 动画的镜像播放
Cycle Offset 动画开始播放的时间
如0.5则从动画中间开始播放,例如走路中初始左右脚的切换
Foot IK 脚部位置基于脚部IK的修正
并不是脚部IK,而是当前脚部位置基于原始动画的脚部IK的修正,修正值仅和原始动画IK位置有关,和当前IK位置无关
Write Defaults 记录动画默认值
开启后,在onEnable()发生时时,记录每个对象的初始属性。如果一个动画没有修改某个属性,则某个属性会恢复默认值,其它属性再开始动画。
状态机出问题的时候最好关了。
Transitions 状态转换
可以调节转换的优先级
Solo > 上层 > 下层 > mute
状态转换

Transitions 状态转换
可以调节转换的优先级
Solo > 上层 > 下层 > mute
Interruption Source 打断来源
即该转换是否可以被某个状态的其它转换打断
Ordered Interruption 打断排序
即某个状态的转换优先级高的可以打断优先级低的
None不可打断
Current State可被当前状态的其它转换打断
Next State可被下一状态的所有转换打断,优先级高优先
Current State Then Next State可被当前状态和下一状态其它转换打断,当前状态优先级大于下一状态
Next State Then Current State可被当前状态和下一状态其它转换打断,下一状态优先级大于当前状态
混合树

即把对多个动画的混合作为一个状态。
BlendType 混合类型
Motion 动画Threshold 阈值播放速度
即AnimationClip设置当达到某个值时,该动画的权重为1该动画的播放速度
Compute Threshold 计算阈值
Speed计算出的Root Motion的速度
Velocity X计算出的Root Motion的速度的X分量
Velocity Y计算出的Root Motion的速度的Y分量
Velocity Z计算出的Root Motion的速度的Z分量
Angular Speed(Rad)计算出的Root Motion的旋转速度弧度值
Angular Speed(Deg)计算出的Root Motion的旋转速度角度值
Adjust Time Scale 调整时间缩放
即自动计算动画播放速度,使多个动画的移动旋转速度相等。
如前进和后退速度不同,可自动计算需要调整的动画播放速度,使速度相等。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 02:16 , Processed in 0.096193 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表