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

经验分享 程序员 微信小程序 职场和发展