編輯器零件制作4:復(fù)刻瑪恩納的天賦“游俠”
瑪恩納的一天賦“游俠”描述為:攻擊敵人時攻擊力提升至113%(+3%)。周圍存在3名及以上敵人時攻擊力提升至118%(+3%)且受到的傷害減少15%。
簡單分析一下這個天賦的效果,可以得出:
(1)這個天賦會分別對最終造成傷害和最終承受造成一次乘算。
(2)該天賦會不斷檢測【周圍八格】射程內(nèi)的敵人,也就是3*3格子的范圍。
(3)該天賦效果有兩種:少于3名敵人時,只有13%增傷;大于等于3名敵人時,同時擁有18%增傷和15%減傷。
因此為了復(fù)刻這個天賦,在編輯器中需要同時做增傷用的Modify和減傷用的Buff,同時還需要輸入代表格子射程的二維坐標,以此對指定范圍進行敵人數(shù)量的檢測,根據(jù)數(shù)量的變化,改變增傷和減傷的數(shù)值。
最終用一種方式制作了兩個腳本。

首先要在BuffData和ModifyData兩個腳本中分別增加一條:
public UnityEngine.Vector2Int[] AttackPoints;?
隨后在表格中的BuffData和ModifyData部分也要插入相應(yīng)的一列,用于輸入坐標值。
輸入的方法和SkillData中的AttackPoints是一樣的,比如你需要讓干員檢測周圍四格,那么就輸入:0,0#0,1#1,0#0,-1#-1,0

隨后首先創(chuàng)建一個Modify腳本,起名為“根據(jù)周圍單位增傷”,輸入以下內(nèi)容:

這里定義了五種數(shù)值,分別為加攻倍率1、周圍單位需求數(shù)、射程、加攻倍率2、單位類別。
其中“單位類別”在編輯器的定義中:1代表玩家,2代表敵人,3代表雙方,相關(guān)腳本內(nèi)容較為復(fù)雜,目前我也不太理解其中的實現(xiàn)過程,就不細說了。

這里的邏輯是:
(1)如果射程不等于0,就以目標單位為中心,射程Radius的數(shù)值為半徑畫一個圓,不斷地尋找在射程中的指定類型的單位。如果獲取的單位數(shù)小于周圍單位需求數(shù),就獲得加攻倍率1,的加成,否則獲得加攻倍率2的加成。
(2)如果射程等于0(也就是不寫Radius,默認為0了),就獲取AttackPoints中的所有坐標,并且把這些坐標轉(zhuǎn)化成格子射程弄到一個列表里,不斷地尋找在格子射程中的指定類型的單位。后續(xù)步驟和(1)相同。
隨后用同樣的方式再創(chuàng)建一個Buff腳本,起名為“根據(jù)周圍單位減傷”,輸入以下內(nèi)容:


最后驗收成果,第一個測試圖在兩個點位各疊加了2只0防御源石蟲,叔叔攻擊為1000,倍率1和倍率2分別為10和20。

測試得到的結(jié)果符合預(yù)期。


再將減傷Buff的兩個值分別設(shè)置為0.8和1(也就是80%減傷和100%減傷)

周圍敵人不足3個時,瑪恩納受到20%傷害。

周圍有3個敵人時,瑪恩納無敵。

這樣就完成了瑪恩納的一天賦。