由于跳跃动画分为了很多个部分,所以需要对每个部分进行重新命名。
接着,再将此动画分为两大类,一类空中动作(Jump animation),一类落地动作(Landing animation)
选择Player人物,在下方Animation中,新建动画
动画新建和命名规则,根据guide内的颜色分类来进行
新建动画混合树
由于动画太多,也进行了分类,则选用动画混合树(Blend Tree)。在Animator窗口中鼠标右击进行创建,并命名为Jump
操作动画混合树,加入之前创建的动画,并设置相关参数
右上角BlendType为混合参数类型,1D为单一参数、2D为2维向量参数。由于跳跃是需要通过Y轴参数来控制,因此在左侧窗口新建一个velocityY
参数
接着,将之前创建的动画全部加入混合树,并且设置好Threshold值。此值为人物跳跃Y轴的变化值,BlueJump1 13为人物2D刚体内velocity Y轴为13数值时,该动画从BlueJump1开始播放
将新建的velocityY变量写入Animation C#代码中
将velocityY变量写入SetAnimation方法内,使其实时获取RigidBody刚体中Y轴速度的值
animator.SetFloat("velocityY", rigidbody.velocity.y);
对Animation的进入条件进行操作,并对新参数进行C#编码
跳跃动作只要离开地面在空中就开始执行,所以在左侧加入一个新的参数isGround
在PlayerAnimation C#代码中,写入新代码,进行实时赋值
animator.SetBool("isGround", physicsCheck.isGround);
根据需要,可以使跳跃动作优先级最高,从而让跳跃动作可以打断其他一切动作。那么就把Any State
连接到Jump
上,意为任何状态都可以进入跳跃动画。
并且在下方加入IsGround参数,并设置为false。意为,不在地面就执行Jump动画
然后把连线数值根据需要全部关闭。
因为人物落地动画是通过跳跃的空中动画进入的,所以将Jump动画连接到OnLand动画
连线数值
并且在下方,加入isGround
参数。因为在空中才能进行落地动作,所以赋值为True
接着,落地动画进入待机动画
因为只要落地动画播放完毕,就可以进入待机动画,所以连线数值中,Exit Time
设置为1,即完整播放一遍。
最后,落地动画播放与否,加一个条件。如果落地立即开始奔跑或者走路,凡是X轴方向有了速度,则不进行落地动画(因为会有落地动画在漂移的动作)。所以,将OnLand动画连接到Exit上。
只要X轴方向速度大于0.1,有速度了,就退出落地动画,并取消上面的参数。