今天检索Opsive的时候,无意间看到有人把我的文章转到腾讯的文章版面去了,虽然没有注明原文地址,不过看到自己的文章被转载,还是有点小激动的,于是决定今天在写一篇:)
为了文章观感,图片就不加水印了,希望转载的人自觉填上原文地址,WangHaoDiablo原创文章:)
需求:玩家按下逗号,开始跳舞,再按下一次逗号,停止跳舞。
创建一个类
using UnityEngine; using Opsive.UltimateCharacterController.Character.Abilities; public class DancingAbility : Ability { }
空类即可,不需要任何代码,如果判定,当玩家试图移动时停止跳舞,则需要填写代码,暂时,只完成上面需求就好,这个主要是用来,理解UCC复杂的动系统,是如何运作的,知道这个原理,我就可以很轻易的去搞道具,武器什么的了。
填写Inspector
我吧Dancing Ability配置到优先级比较高的位置。
触发类型我设置为按下一个按钮
停止类型我设置为再次按下一个按钮
输入行为我设置为Action。
最为重要的,Ability Index 要设置为 102,这个值不可以和其他值重合。
获取免费动画
Maxamo上面有很多免费动画,大多只是Humanoid动画,非常便利
我选了这个跳舞的动画
编辑Animator
先看看UCC的分层规则。
它使用了多个Avatar Mask,Avatar Mask是Unity用来做动作融合的遮罩功能。这里比较常用的是上下身的区分,比如你想要一个移动射击功能,完全可以把射击瞄准的上半身,和全局播放上半身的移动动作合成一个移动射击。上半身的瞄准动作覆盖下半身的移动动作即可。
然后跳舞是一个全身动作。
我们需要在Full Body Layer增加一个子状态机。
进入到Dancing子状态
首先将Dancing动画放进去,并按下图连线,在这之前记得把他换恒Humanoid,并设置好avatar,这里就不赘述了。
设置AnyState 到Dancing State的Transition
两个重要的条件
1-AbilityIndex 等于 102,我们刚刚填到Inspector里面的值
2-一个Trigger AbilityChange。这个是必填项。不用多问了。
结束跳舞,要配置Dancing到Exit的transition
这里,要控制AbilityIndex 不等于102。当Ability结束的时候
添加Input配置文件
这样按下逗号的时候,就会触发Dance了。
最终效果:
按下逗号之后,这个傻不拉几的假人就开始跳舞了。