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循環裏多刷幾發子彈就行了,
-----------轉載請標明出處