Unity标准骨骼系统(Avatar)
配置Avatar
1.确保模型的每块骨骼和Unity的Avatar骨骼系统对应
2.确保模型以T Pose 站立
.
实线代表必须一一对应
虚线代表可以不对应
根变换
Unity中的动画展示会产生两套transform
RootTransform:每帧实时计算出来的。如果我们在建模时加入了根变换,角色就会在播放动画的时候进行一些位移,而不需要我们用代码去控制。(蓝色)
BodyTransform:根据身体上半身和下半身综合计算出来的朝向。(红色)
Bake into pose
烘焙到姿势,如果选中,物体在播放动画的时候会进行位移
Animator Controller(动画控制器(动画状态机))
AnyState:任意状态;常用作播放死亡状态,不管当前角色在播放什么状态,都可以被杀死然后播放死亡动作;
Entry/Exit:进入状态机和退出状态机,进入状态机默认连接默认状态动画;
Idle:橙色(名字可以改),一般是默认动画,一般播放待机动画;
Run:(灰色)一般状态(名字可以改)
动画状态机的层和参数
Layer:动画状态机中还可以嵌套一个动画状态机;
Paramters:状态切换参数(int float bool trigger);
控制动画跳转的条件
int:大于 小于 等于 不等于
float:大于 小于
bool: true false
Trigge:触发r
动画切换属性
Solo:动画切换优先;
Mute:动画切换禁止;.
Has Exit time :勾选上会在切换动画时上一动作结束后再播放下一动画
ExitTime:动作切换上一动作退出时间;
Fixed Duration/Transtion Duration:动作切换时间长度
Transtion offset:上一动画切换到下一动画,下一动画从什么地方开始播放
Interruption sources:打断动画切换来源:
重要:conditions:这里面的切换动作参数是paramers里面定义的,条件可以使大于、等于、不等于、小于
Animator组件
Controller:AnimatorController文件;
Avatar:放骨骼文件;
Apply Root motion:如果勾选代表使用动画中的位移,如果不勾选代表不使用动画中的位移;
如果当前游戏物体上的代码组件中有OnAnimatorMove,内置函数,位移就受代码控制;
Update Mode:正常更新、物理更新(FixUpdata更新)、不受时间缩放影响;
Culling Mode:始终有动画;
当摄像机没有渲染该物体,就会停止部分Transform相关功能;
当摄像机没有渲染该物体,整个动画都不会被渲染;
有限状态机:FSM
确定玩家的有限个状态,通过枚举来表示
玩家在任意一个时间只可能处于一种状态, 通过state变量来表示当前玩家的状态
当满足某个切换条件时, 状态间可以相互切换
检查切换条件是否满足,当满足时 进行切换
不同的状态下执行不同的行为