UE4_攻擊傷害3_受擊傷害 噴血 倒地死亡


攻擊在不同部位傷害應該是不一樣的,比如把人分為 頭、胸、腹、胳膊腿等。

之前做了一個簡易的判斷,只是判斷是否打在了頭上,這次用宏全做出來。

噴血

首先判斷是否打在了胳膊上。輸入的name變量是骨骼名稱。

 

 

找到AI的骨骼,找到手臂骨骼的名稱s。(手指就不算了,大臂、小臂、手)

 

 

把這幾個都判斷一下

 

 

復制一份,做腿的

先找腿的骨骼名稱

 

 

復制之后修改里面的骨骼名

 

 

再來一個重要部位檢測(包括頭、脖子、脊柱01 02、屁股)

 

 

 把后面的播放受擊動畫合成為一個宏或者函數

 

 記得在輸入里面添加一個exec。

 

 

把骨骼名稱和攻擊方向提升為變量,方便操作

 

測試,沒有問題

 

 

 

新建一個關於傷害計算和噴血部位的函數,take damage

bone name 傳入骨骼名稱,用於判斷出血位置

damage 傷害量

damage X 傷害倍數

右鍵輸入math,可以自定義一個數學公式,直接在名稱里輸入就行。

 

 比如我們修改公式的名稱為A*B,打開該公式就是這樣的

 

 

新建兩個變量,護甲AP和血量HP。

計算方式,借鑒lol的傷害計算公式,實際傷害=面板傷害*(100/100+實際護甲)。

實際護甲=面板護甲*(1-護甲穿透百分比)-實際穿甲值。

當然先不做穿甲的事,先只考慮傷害和護甲值。至於穿甲、暴擊bulabula 以后有空在做。

所以,HP=HP-Damage*(100/100+AP)

 

 

然后播放噴血動畫

用 spawn emitter attached

骨骼就是我們輸入的骨骼,mesh就是從左上角拖出來的mesh,emitter template 拖到輸入里,在外面改。

 

 以攻擊手臂為例

這是要添加的噴血動畫

 

 大概是這樣,感覺噴血量有點多

 

 

然后就是調整出血的動畫,也可以跟之前一樣用一個 隨機的布爾值進行select

多試試看哪個效果好,沒啥好說的

 

 

然后加上AI往后退的動畫,直接加在take damage后面就行。

做了一點調整,把damage*damage X直接輸入了Play Damage Anim,作為判斷是否是重擊的傷害量

 

 

 

死亡與肢解

 

死亡

比較HP與0,如果大於0正常播放,小於等於0就先播放受擊動畫,再返回一個布爾值,代表死亡。

 

如果 is dead 為true ,在隨機0.2-0.7s的延遲后,開啟“布娃娃” 物理模擬。

 

 

 “布娃娃”就是系統模擬的,帶物理重力的一個東西,比如下面這個攤在地上,其實就是因為AI模型本身的重力導致的。

 

 

受擊動畫的進一步修改,加入持續流血的效果

如果傷害>=80,播放被擊倒的動畫,必定流血

如果傷害<80,>=40,有幾率流血

 

 

 

 用event tick檢測,如果在流血,就播放持續流血的動畫

 

5s之內沒有受到傷害,就停止流血。

 

 

 

斷肢

也可以用個隨機布爾值,做概率斷肢

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM