玩家

玩家是遊戲的重要概念。在Craftland中我們已經為玩家實體默認賦予血量、移動和背包等基礎功能。如果想進一步對玩家實體的功能、屬性、外觀或動作表現進行擴展,我們也可以使用圖元編輯器進行邏輯的拓展。本篇將從玩家圖元與玩家腳本兩方面介紹玩家這個重要概念。

玩家是以玩家實體的實例存在於遊戲中的,這意味著在模組中的編輯會映射到每一個創建出的玩家實體實例上,而對於腳本來說要注意其作用範圍是「具體某個玩家」還是「所有玩家」。

玩家實體設定

在CraftLand中所創造的預設玩家與FF的玩家基本上一致,擁有一些基礎的功能例如移動、跳躍、拾取和射擊。所以在我們在FF遊戲中透過玩家所進行的操作在CraftLand中都可以被重現。

在CraftLand我們無法直接修改玩家的實體屬性,也無法直接的檢視玩家實體上所掛載的組件。但是我們可以在設定中發現部分對應玩家實體一些配置。

玩家的設定選項共分為3個大類,分別為:基礎、技能設定和寵物設置

基礎

玩家實體的一些基礎屬性設置

image-20241121171440547

生命上限:玩家的最大生命值,範圍20-1000。

EP上限:玩家的最大EP,範圍0-200。

初始EP比例:初始玩家擁有的EP=初始EP比例*EP上限,範圍0%-100%。

EP快速轉換:是否開啟快速將EP轉換成HP

無限彈藥:是否開啟無限彈藥

無限冰牆:是否開啟無限冰牆

無限投擲物:是否開啟無限投擲物

傷害率:玩家造成的傷害離別,最低0%最高500%,0%則不會造成傷害

承傷率:玩家受傷承受受的傷害比例,最低0%最高500%,0%則不會受到傷害

移動速度:移動速度的縮放比例,小於100%比預設速度慢,大於100%比預設速度快。範圍50%-500%。

跳躍高度:跳躍高度的縮放比例,小於100%比預設高度低,大於100%比預設高度高。範圍10%-500%。

技能設定

在技能設定我們可以控制被動技能和主動技能的開關狀態,如我們的遊戲禁止使用技能,則可以直接關閉技能係統,那麼全局的玩家會無法使用技能就算他們裝備了技能。

image-20241122104409773

被動技能:是否開啟被動技能。

主動技能:是否開啟主動技能,若關閉則無法調整所有技能的冷卻時間率

冷卻時間:冷卻時間下限0%,上限100%。0%代表沒有冷卻時間,100%則根據技能本身的冷卻時間進行計算。

寵物設置

在寵物設定中我們可以改變寵物系統的開啟狀態。

image-20241122111147660

寵物:是否開啟寵物系統

寵物技能:是否開啟寵物技能

玩家腳本

我們所創建的玩家腳本實際上是掛載在玩家這一實體上的一個組件,但是再CraftLand中我們無法直接查看某個實體上縮掛載的所有組件。

遊戲預設不會創建玩家腳本,所以首先我們需要打開一個玩家腳本。

首先,我們點選介面左上角【Setting】開啟設定邊框,選擇【GamePlay Settings】,點選【Edit Gameplay Rules】進入設定介面

image-20241121142412976

進入設定介面後,選擇【Property Setting】中的【Player Rules】類,點選【Player Script】開啟玩家腳本。

image-20241121143424135

SeaTalk_IMG_20241121_154847

當我們再玩家腳本中編寫了圖元方塊後,那麼這個玩家腳本就會自動掛載在玩家這個實體上,在遊戲開始時所創建的所有玩家的實體實例都會帶有我們所創建的新的邏輯和功能。

相關圖元

因為玩家腳本會掛載在每個玩家實體範例上,請注意全域事件可能會不符合設計地多次觸發。

通常,我們會在玩家腳本上進行拓展和改寫玩家實體。透過私有事件觸發,可以限定觸發的物件範圍:

image-20241121164231670

範例

範例邏輯:擊殺玩家後會給擊殺者發一把M60

首先,我們需要知道有兩個’當玩家造成擊殺時‘的事件,他們分別為玩家腳本私有事件和全域公開事件

image-20241122155234399

image-20241122155242226

當我們為這兩個事件添加相同邏輯時,

私有’當玩家造成擊殺時‘事件:

image-20241122155703305

私有事件’當玩家造成擊殺時‘,只會在當前玩家實體實例造成擊殺時觸發。

增加道具為此實體實例造成擊殺時添加一把M60,此實體即使造成擊殺的本身,所以可以達成需求。

實際編輯中,還需要考慮新增時M60武器是否已滿等問題。

公共’當玩家造成擊殺時‘事件:

image-20241122155734121

如使用公共事件’當玩家造成擊殺時‘,會使任意玩家造成擊殺時所有玩家都會被發一把M60。類似的邏輯推薦放在全域腳本中。

所以,有些情況並不建議使用公開事件去建立邏輯。