2018年4月24日 星期二

「傘之下」開發記錄—05

能跑能跳之後
當然是去打架啦不然幹嗎
就來到攻擊系統啦

因為整個系統分了兩個來寫
所以也分成兩篇來講
不然文章太長不想打
首先是最基本的「按下按鍵」觸發攻擊
遊戲裡用的按鍵是「Z」,然後最多連按三下達成一個3 combo
這部分程式碼,是上圖最低層的那段落

_ComboParams是一個string陣列(第二段中的第一句出現)
在Unity版面中可以更改名字(名字要等同於Animator中,對應Attack動作的Trigger的名字)
((超繞口的這句
接著每當攻擊時,便觸發「第一行名字的那條Trigger」(先假定叫Attack1),再按一下時變Attack2((ry
直到設置好的連擊都使出後,連擊數才停止增長
而用來偵察連擊數多寡的,則是「.Length」(查看陣列上限為多少的一個用法)
當連擊數「不少於」Length的時候,再按「Z」(攻擊鍵)也沒用

因為遊戲中不可能只使出一次連技,所以當然會有個重置系統
但在說重置之前,提及一下遊戲設置的「特殊技」
特殊技有它的固定按法,現時的技能只有「上+Z」
然後程式碼的做法是「按住上再按下Z」(往後可能會增加「按住Z再按下上」的按法)
之前有碰過一些遊戲,要幾乎同時按下才能發動某些指令
當時機錯過的話就不能發動……感覺這種做法有點不人性,所以在思考過後得出現在的做法



攻擊的按鍵講完,就來說說攻擊重置是什麼東東……之前((又之前
第一張圖中,有一句程式碼是「ComboAttack(int)」
所以先輕輕點一下這部分

當呼叫這個void時,會調整一些參數
較重要的是最下方被框起來那段
_AttackRate直接當成重置所需的時間is ok ww
因為每下攻擊的時間長度不一樣,才需要用不同的參數去調整
但是。很重要的,但是!
感覺用Animation Event去做調整會更省事
(不知道Animation Event的下一篇會提及,或是直接上YT找更專業的教學"XD)
之所以沒有那樣用,單純是因為,我在寫這段程式碼的時候,壓根不知那什麼東西www
當我聽說Animation Event之後,就像發現新大陸一樣XDD
所以啦所以,這段之後應該會改掉就是(笑)


最後真的是講攻擊重置啦
其實這個也只是交給電腦用時間去計算而已
當開始第一下攻擊時,_ResetTime會開始計時
_ResetTime > _AttactRate的話,就會呼叫ComboAttackReset
接著一切相關數值也跟著Reset
這兩個數值,_AttactRate上一段有提過,而_ResetTime亦在上一張圖裡
在攻擊的時候_ResetTime會歸零,間接延長它重置的時間
然後再一提:因為遊戲有「特殊技」,而我設定是按下特殊技後,攻擊就強制中止
因此在判斷式中才有(|| _SpecialAttack)這句子


感覺文章有越來越長的趨勢,是因為太多東西可以講,但我又懶得開太多文章的關係ww
所以嘛……我這種弱小程式的心得也就這樣啦
以上w/

沒有留言:

張貼留言