Unity技能系統框架(三)分析一個具體被動技能

    這一篇分析一個具體的被動技能:蟻人的影矛

    首先看下技能描述:“每個蟻人都是天生的擲手,投擲出長矛刺穿目標的身軀。普通攻擊有機率對攻擊範圍內其他{0}名目標進行相同攻擊。”,只要是個程序猿,智商足以總結出該技能重點:“普通攻擊有機率攻擊範圍內其他{0}名目標”,其他的都是廢話。不過要注意,這個攻擊是以彈道的方式攻擊多個目標,而不是分裂傷害。分析下這個技能的邏輯思路,這裏可以拆分成這幾個模塊:普攻觸發機率事件攻擊範圍額外目標數量

    然後看下我在技能編輯器裏的配置:

技能編輯器配置

    接下來具體解釋下配置思路,因爲是一個被動技能,就不分析冷卻和耗藍的情況了,主要分析下重點屬性和事件的思路及部分代碼:

1、首先當蟻人創建時,會把蟻人擁有的技能配置表加載,然後根據技能配置表數據獲取到配置的60007這個邏輯數據(後面簡稱60007技能),然後將60007技能添加給蟻人的技能管理器中,並觸發“添加技能”的事件,事件參數就是60007技能。那麼這個60007技能本身就配置了一個監聽“當技能添加”的事件,所以這時會執行這個事件:應用Modifier修改器。這是一個“直接相關”的事件,不再過多解釋了。

2、“應用Modifier修改器”事件中,可以看到配置的目標爲施法者,修改器的ID爲6000701,其實就是爲蟻人本身添加了一個6000701修改器,而這個Modifier就是在60007技能的Modifier列表中配置的。下面看下具體邏輯:

3、然後重點分析下這個6000701修改器:

    a.修改器類型是可刷新的,因爲當技能升級時,需要把升級後的6000701修改器再次添加給蟻人,而此時蟻人之前的6000701修改器會被覆蓋,從而使用升級後的屬性和效果。所以我在技能事件列表裏配置了一個“當技能升級時”的事件列表,裏面的操作還是“應用Modifier修改器”。
    b.修改器的持續時間爲-1,因爲被動技能永久存在,所以我用-1表示。

    c.修改器沒有特效、非Buff和Debuff、隱藏的、不能被驅散、不需模型做出動作、屬於被動、無Think間隔。這些直接略過,不再解釋。

    d.修改器的事件列表監聽有一個“[當擁有modifier的單位開始攻擊某個目標]”的事件,這是一個“間接相關”的事件(之前分析過“直接相關”和“間接相關”的事件如何區分,這裏不再解釋了),當蟻人開始攻擊目標時,觸發這個事件,那麼這個列表裏會執行的操作是隨機機率的事件,這個邏輯相對簡單:

    e.最後是機率事件中的成功事件列表裏添加了一個“額外攻擊目標”的事件,其中傷害比例爲1,表示普攻的全額傷害,額外目標數量是從數值表中讀取。其中額外攻擊目標的獲取,是從進入蟻人攻擊範圍的目標列表中獲取的,只要敵人進入攻擊範圍,就可以保存到可攻擊的目標列表中,離開範圍時從列表中移除。然後看下具體邏輯:

至此,蟻人的被動技能——影矛,已經成型了,只需要在技能管理器和Modifier接收處理器中觸發相應的事件即可。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章