这节讲剩下的两个关于翻滚的动画安排。
1.在奔跑状态按空格是跳跃+翻滚
在之前已经处理好步行状态按空格是翻滚的情况下,现在在奔跑的情况情况下按空格就是跳跃:现在的优先权是fall到roll再到jump,由于之前已经设置好ground到roll的Conditions:
那么如果判断目前的forward值小于1.1,那就触发roll动画,反之就自然触发jump动画,所以跳跃这步基本上是做好的了,可以只考虑怎么接翻滚了。
首先就是拉Transition,基本操作,驾轻就熟:
jump→roll
如果在跳跃动画之后,角色已经着地,那么就不考虑转向fall,而是转
向roll,所以Transition就是isGround为true:
isGround
这基本就已经ok了,可以看看效果如何:
2.在下落状态时如果速度大于某个值就落地接个翻滚
这个情况一般考虑的就是在高处下落时,由于“重力”的原因使得角色下落速度越来越快,在大于某个值时就接个翻滚,这也是个很常见的动画安排,看看如何实现它。
拉Transition这个就不谈了但别忘了消勾Has Exit Time,重点是触发这个转换的Conditions,由前面的描述可知,角色的落地时的速度是个很重要的条件。因此必须设置一个参数来判断速度是否大于某个值:
我们可以设置一个Trigger,在速度大于7.0时触发。那么怎么可以获得物体的速度呢?我们可以通过Rigidbody的
velocity.magnitude
获得速度的模,在这个模大于7.0时就设置roll触发:
if (rigid.velocity.magnitude>7.0f) {
anim.SetTrigger("roll");
}
这个触发器设置好了,就要把它放在Conditions里:
当然,不要忘了Reset Trigger:
现在可以看看效果如何:
由于我已经做好了第三人称视角,所以现在能很好的观察角色的动画播放,关于这个第三人称Camera日后也会详细讲述。
网友评论