關於製作動作 格鬥遊戲時攻擊持續幀判定的防重複處理?

時間 2021-05-11 20:30:13

1樓:款冬

這個其實是個基本的邏輯問題吧

1.1段傷害,不重複判定

protected

intHitCount=0

;public

void

Hit(

intcount)if

(HitCount

>0)}攻擊判定為13幀,那麼第1幀呼叫Hit(1),表示增加1層攻擊判定,其他12幀呼叫Hit(0),只要HitCount欄位》0,Hit函式在被呼叫時就會檢測攻擊框和受擊框是否重疊。

2.多段傷害判定:比如第1,4,7都是Hit(1),其餘Hit(0)即可

3.持續傷害攻擊技能:同上,Hit(x)表示在這一幀進行x次傷害判定

2樓:猴與花果山

這個問題,我在別的貼裡說過好多次了吧:

每乙個動作開始的時候,都會重新整理乙個陣列,當你在這個動作中,任何一幀碰撞過乙個角色之後,會記錄乙個結構

你可以利用這個結構獲得:

1,我已經碰撞過某個角色多少次了。

2,我上次第幾幀碰撞了某個角色。

一些act裡面會有要求說我乙個動作可以連續命中同乙個角色多少次,每次間隔多少的。

對於這個結構的記錄方式的優化,因為專案而不同。

3樓:Y PauT

瀉藥,現實開發中遇到過兩種情況同時使用的, 比如有些技能可以持續攻擊,而有些技能在技能序列內只能攻擊一次,通用的方法(例如攻擊者統一時間間隔等)都不能很好的完美解決,因為策劃的需求是無限的,所以最好的解決辦法,就是寫個工具把技能拆碎,具體多碎看你們對技能的定義,然後把每個段的技能是否持續傷害,或者段內只能受創一次都開放給策劃即可,做動作遊戲時刻謹記程式是做工具的,是提供基礎功能的,深度配置還是要策劃來完成。如果覺得工具麻煩,用配表的方式也是乙個不錯的選擇。

4樓:施展

瀉藥.個人覺得1和2的問題基本可以歸為一類

void Update() {

檢查技能持續時間是否超過生命週期

bool enable = CheckEnable技能/攻擊是否可釋放(超過攻擊間隔)

bool can_attack = CheckTimeOut();

if(can_attack) {

bool hit = HitTest();

if(hit) {

attack();

問題1的生命週期等於攻擊間隔(即只能攻擊一次),問題2的生命週期等於攻擊間隔*n(攻擊n次)

動作遊戲和格鬥遊戲最核心的區別是什麼?

地球防衛軍 動作遊戲的核心是行動,通過合理的行動,達到通關這個目的。格鬥遊戲的核心是爭鬥,通過技巧和心理上的爭鬥,達到擊敗對手這個目的。 藍海悅 這麼說吧,動作遊戲熱血無賴,格鬥遊戲街霸 熱血無賴除了精良的格鬥還有大量的劇情,跑酷還有開放或箱庭世界 但格鬥遊戲基本只注重格鬥,地圖特別小,可以多人玩或...

格鬥遊戲玩家在對戰時是如何預判對手的動作?

歐富橙 所謂預判,也就是預讀,無非就是一看二猜。看,看對手的動作,尤其是要摸到對方的習慣,找到對方角色或者對方玩家在遇到某種情況時較大概率會選擇的行動方式。猜,無論是否抓到對方的習慣,在對方進入某個狀態之後,判斷對方可能進行的行為並迅速做出相對合理的選擇,這個選擇如果沒中,也應該盡量避免致命風險。預...

你為什麼喜歡格鬥遊戲?

金咿咿 在1v1的場景中,更能感受乙個人的打法風格,及看清自己,在練習的過程中能清楚看到自己的成長,或許依然打不過別人,但是能感覺到自己操作和心境在進步的感覺,我很喜歡 我最喜歡玩格鬥遊戲了。最主要的原因就是刺激。我自己的感覺,玩格鬥遊戲比其他型別的遊戲要帶勁。平常自己是個溫和的人,玩格鬥的時候感覺...