最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

TomLooman_ActionRoguelike_AssignmentFour

2023-08-18 15:22 作者:別叫我小紅  | 我要投稿

該專欄用于保存對(duì)TomLooman的ActionRoguelike項(xiàng)目的學(xué)習(xí)筆記,學(xué)習(xí)過程中的思考與記錄不一定準(zhǔn)確。


教程參考:https://github.com/tomlooman/ActionRoguelike

基于UE5.0的項(xiàng)目實(shí)現(xiàn):https://github.com/CarolBaggins2023/TomLooman_ActionRoguelike_Tutorial

2023_08_12

Assignment 4:當(dāng)bot處于低血量時(shí),逃跑并回血

?

給bot帶上屬性組件后,Assignment 4較容易完成。我們首先需要在行為樹中判斷bot是否處于低血量,和判斷玩家是否處于bot攻擊范圍內(nèi)相同,我們通過用Service對(duì)黑板中的bool變量賦值,完成這個(gè)功能。

我們繼承BTServiceNode創(chuàng)建C++類,同樣要覆蓋TickNode函數(shù),來實(shí)現(xiàn)間斷地檢查bot血量。

TickNode的實(shí)現(xiàn)如下,關(guān)鍵還是兩點(diǎn),訪問到bot和訪問到行為樹黑板。訪問到bot是為了從bot的屬性組件類獲得血量信息,訪問到行為樹黑板是為了用bot的血量信息給黑板中的變量賦值。

?

在通過Service給黑板中的bool變量賦值后,我們就可以用這個(gè)變量決定要不要執(zhí)行逃跑操作,在行為樹中,這就是一條以黑板節(jié)點(diǎn)開始的分支,我們將它放在最左側(cè)(好像代表優(yōu)先級(jí)最高),與攻擊類似,我們這個(gè)分支添加一個(gè)冷卻時(shí)間。

該分支主要是3步,運(yùn)行環(huán)境查詢,移動(dòng)到查詢結(jié)果位置,回血。

?

這里的環(huán)境查詢依據(jù)三個(gè)Test。

路徑長(zhǎng)度測(cè)試用來尋找一個(gè)可到達(dá)且距離bot較近的位置,距離查詢用來保持bot不離玩家太遠(yuǎn),TraceTest用來保證bot在那個(gè)位置不會(huì)受到玩家攻擊(bool match為true表示射線路徑上有hit才會(huì)通過篩選)。

三個(gè)測(cè)試中路徑長(zhǎng)度的測(cè)試權(quán)重最大(Scoring Factor)(權(quán)重為負(fù)僅表示距離越近分?jǐn)?shù)越大,而不是分?jǐn)?shù)為負(fù))。

?

回血任務(wù)節(jié)點(diǎn)類似于攻擊任務(wù)節(jié)點(diǎn),我們?cè)贑++中繼承BTTaskNode類,并覆蓋ExecuteTask函數(shù)。

該函數(shù)的實(shí)現(xiàn)類似于子彈造成傷害的函數(shù),都要用GetComponentByClass訪問Actor上的屬性組件類成員變量,并用ApplyHealthChange修改血量。不同的是,子彈造成傷害是通過Overlap函數(shù)的OtherActor參數(shù)訪問到Actor,而這個(gè)功能則是通過行為樹訪問使用行為樹的AI控制器,再通過AI控制器訪問被控Actor。


TomLooman_ActionRoguelike_AssignmentFour的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
章丘市| 林甸县| 英德市| 丰镇市| 佛冈县| 吉木乃县| 化州市| 巴马| 上饶县| 抚顺市| 吴旗县| 休宁县| 襄垣县| 张家口市| 准格尔旗| 台南县| 同江市| 张掖市| 盐津县| 宝兴县| 泰兴市| 洪雅县| 吉水县| 沙洋县| 增城市| 株洲市| 雅安市| 昭平县| 浪卡子县| 威海市| 酒泉市| 邳州市| 枞阳县| 防城港市| 红桥区| 杨浦区| 连山| 盈江县| 凌海市| 资溪县| 恩施市|