UCWeapon与UCWeaponRanged武器的本质区别是后者是须要子弹的,也就意味着后者在可否BaseAction时须要检查玩家的是否有弹药动画
刀是经过检测是否播放动画能知道本身是否应该攻击,但枪就不行了,由于枪在攻击以前是要把子弹刷出来的,所以UWeaponRange的BaseAction通知UCWeapon的PrivateBaseAction事件,具体武器重写这一事件,具体到UCWeaponCharGun是这样的blog
PrivateBaseTion事件里CharGun先刷出Projectil,再刷出UCShell,而后就无论了,毕竟枪的BaseAction是发出子弹,子弹才能伤怪,而不是枪事件
子弹的实现是分红了弹壳(UCShell)与子弹(UCProjectil)的,get
UCShell模型it
弹壳的主要做用是模仿弹壳的弹跳,它最多弹跳6次,就消失了io
这一大片的代码都是为了给Shell设置旋转及速度的,一个东西想要运动及旋转起来,UC的做法是给它加上for循环
子弹的核心是Hit事件,整体的逻辑是若是子弹没有打中bot怪,就对击中的物体模拟一个物理效果,并生成一个弹孔,若是击中了就由Bot怪的Hit事件处理,子弹就不理会了bfc
这时再回到CharGun,刷子弹的过程,首先是在枪口处给一个火焰粒子特效,模拟真实的枪循环
而后刷子弹,并禁止子弹伤到本身,im
最后是把弹道画出来,这个效果是在运动中才能看出来
最后谈一谈ShotGun的子弹,散弹枪子弹就是一颗子弹包含了多颗子弹而已,只须要在一个for循环里多刷几发子弹就行了,
-----------转载请标明出处