Unity笔记——使用Animator的BlendTree制作八方向移动
首先在 Animator 中 右键 - Create State - From New Blend Tree,创建一个新的混合树。


根据自己的需要重命名,双击这个状态进入混合树的编辑界面。

点击现在仅有的这个 Blend Tree,在 Inspector 面板将 Blend Type 的 1D 切换成 2D Freeform Directional。

这个时候我们需要两个 float 类型的 parameter 用来表示x轴和y轴的运动。所以我们在 parameters 界面新建两个 float 类型的变量,命名可根据需要修改。

有了这两个变量以后,我们再次选中 Blend Tree节点,在Inspector界面里,将 Parameters的两个值改为刚才新建的两个变量,第一个表示x轴,第二个表示y轴。

设置完后,点击List下面的加号,选择 Add Motion Field,添加五个项


把 idel 动画,前后左右移动的动画分别置入Motion中。

idel 动画是我的闲置动画,在没有任何方向输入的时候默认播放,Pos X 与 PosY 均设为0。
SwordRun 动画是前进动画,仅在 Y 轴的输入为1的时候播放,所以 Pos X 设为0, Pos Y 设为1。
run back 是后退动画,仅在 Y 轴的输入为-1的时候播放,所以 Pos X 设为0,Pos Y 设为-1。
strafe 是横向移动动画,我这里把它作为左右移动的兼用动画,Pos X 的值为-1和1,1表示向右移动,-1表示向左移动,Pos Y 均为0。
设置完四方向移动后,再添加四个斜向移动动画。

我这里把strafe run动画作为斜向移动动画,将 Pos X 和 Pos Y 分别设置为(-1,-1)、(1,-1)、(-1,1),(1,1)即可。
如果输入的 x 和 y 轴的值未达标时,会播放几个动作的混合动画。
回忆一下玩过的或者看过的游戏,基本上都是前后各一个动画,左右动画是一样的,斜向动画应该也是同一个。一个角色八个方向的动画每个都不同,过于奢侈了。
参考视频:黑魂复刻P60

参考文档:Unity官方手册
https://docs.unity3d.com/cn/2020.2/Manual/BlendTree-2DBlending.html