DH-SRPG 五:單位及單位組建
Unit是重要的組成部分。在這個項目中Unit由多個部分組成

Action:單位的動作,如攻擊與移動等動作在這里面定義
Property:單位的屬性,如生命值與行動點在這里面定義
Skill:單位的技能由這個節(jié)點管理
ShowAction:這個用于在單位行動時顯示,來突顯當(dāng)前的行動單位
Icon:單位的人物圖像
UI:這個只在由玩家控制時有效,顯示操作面板,通過UI可以與Action、Skill等節(jié)點交互。
Unit.gd
屬性與信號
主要的方法
在 _ready 方法中,綁定了UI發(fā)出的信號的連接,這些連接大部分并不由自己處理,而是分別交由 Action、Skill處理。
在行動開始與結(jié)束時都會設(shè)置自己的狀態(tài)并通知控制器自己開始或結(jié)束行動。對于AI來說,通知是很有用的,對于玩家沒用,當(dāng)然,如果要寫類似于讓單位在行動開始時HP恢復(fù)1的特殊玩家效果則可以通過重寫控制器的 unit_start_action 方法來實現(xiàn)。
UnitAction
處理行動的節(jié)點。
攻擊與移動的進(jìn)行申請
組件之間是有依賴的,如上面的兩個方法依賴unit的property節(jié)點提供的屬性來判斷自己是否可以攻擊。如果可以的話會隱藏掉UI(因為通常來說這時玩家才會調(diào)用到的方法,所以需要隱藏玩家操作的UI)并發(fā)出信號,上面這兩個信號會由UnitManage處理。
move_conduct:移動的執(zhí)行。這個方法會消耗Unit的行動點與移動點,同時在移動時會調(diào)用圖塊的回調(diào)來觸發(fā)一些圖塊的效果,比如地刺,會對經(jīng)過的單位造成1點傷害。這個方法一般由Map節(jié)點調(diào)用(玩家與AI都是)還有就是會調(diào)用技能,這會調(diào)用 auto類型的技能,也就是被動,通過這個調(diào)用可以實現(xiàn)類似于“移動兩格生命值+1”之類的效果。
attack_conduct:攻擊的執(zhí)行。與上面的方法一樣會消耗行動點與攻擊機(jī)會,同時會調(diào)用兩次auto技能,分別是“攻擊開始”與“攻擊結(jié)束”。當(dāng)前有一個“雙重攻擊”的技能在攻擊結(jié)束時觸發(fā)。通過這兩個調(diào)用可以實現(xiàn)“攻擊時讓AP提升3點”或“攻擊附帶額外1點傷害”之類的效果。
ui的邏輯與之前的Main.tscn介紹的邏輯差不多。Property是單純的屬性管理節(jié)點而UnitSkill節(jié)點并沒有開發(fā)過多。所以這三樣就略過了。因為目前還沒有支持聯(lián)機(jī)的功能,所以寫得很簡略在后續(xù)添加聯(lián)機(jī)功能時更改應(yīng)該會比較大,倒是后再發(fā)新的吧。
致歉:因為項目的更新隨時都有可能會破壞原有的代碼,您在看到此文時它可能已經(jīng)不是最新的了,請以現(xiàn)在項目的具體情況為準(zhǔn)。
歡迎大家給項目提Issues
項目地址:https://gitee.com/DH-DoveG/dh-srpg-demo