Unity动画、动画控制器、blend tree(一)
如何获取动画资源
模型资源——Space Robot Kyle,Unity官方提供的免费资源
动画资源——basic motions动画资源,包含Idle、walk、run等常规的人行动画,
该动画包本身包含root motion和常规动画
我们运用上述资源,构建一个简单的动画Demo
导入动画资源并应用
1、导入模型本身的动画配置,动画类型要选择“人形”(humanoid),Avatar定义选择“从此模型创建”,然后点击“应用”
2、再回到scene中查看模型,发现Unity已经自动帮我们创建了Animator组件,同时Avator也已经生产好了,但动画控制器是空的
3、创建动画控制器,命名“base“,将上述Animator的控制器设置为“base“
3、在动画控制器base中加入动画walk(从动画素材中,选择BasicMotions@Walk01动画,改名为walk),将“entry”连接到动画,保存运行,就能看到robot在原地走路了
根骨骼动画(Root Motion)
根骨骼动画和非根骨骼动画
根骨骼动画:当动画中角色发生位移后,动作坐标原点跟随角色移动。例如一个向前跳跃的动画,如果在场景中重复该动画,能够看到角色一路往前跳跃,位置一直在前进。适用于有位移的放技能动作等。
非根骨骼动画:当动画中角色发生位移后,动作坐标原点始终保持在原地不变。例如一个向前跳跃的动画,如果在场景中重复该动画,能够看到角色往前跳跃后,完成一次该动画后角色的位置又会重置回去。适用于不能改变角色位置的动画,如闲置动作Idle。
Unity默认情况下是使用了根骨骼动画的,在有些模型的动画在播放后发生了位移后旋转,在游戏循环播放动画后,累计了这些位移或旋转其效果可想而知,所以在这种情况下,需要关闭这些骨骼动画。
反之,如果需要动画自带的旋转和位移,只要不勾选,就行了
loop match(循环匹配),检查动画第一帧和最后一帧是否吻合
动画的平均速度?
动画镜像Mirror
Layer和子状态的区别
layer是多层动画之间的覆盖的时候使用,比如defense动画要覆盖attack动画
Transitions的ext time
有退出时间,代表要等当前动画运行完,才会转移到下一个状态
遗留:三段攻击的bug