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

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

斯坦福UE4C++課程P70-P73創(chuàng)建BUFF世界互動

2022-11-12 17:17 作者:_Hide-on-bush_  | 我要投稿

首先講作業(yè)5的解決方案

我主要是EQS生成硬幣藥水部分沒解決重疊生成問題,其實把生成過硬幣和藥水的位置記錄下來,在再次生成時判斷即可。建議看作者視頻

下面我們創(chuàng)建BUFF和DEBUFF(隨時間變化的傷害效果)

BUFFS(USActionEffect.h)

  • 例子:傷害隨時間變化的魔法球

  • 要求

    • 一定持續(xù)時間

    • 周期性效果

    • 作用時間完,自動StopAction

    • 在AddAction()函數(shù)自動Start

下面我們創(chuàng)建繼承自SAction的C++類SActionEffect。

SActionEffect.h

SActionEffect.cpp

注意在SActionComponent添加RemoveAction函數(shù),表示從組件中移除Action:

在SAction添加變量

編譯后,回到UE編輯器,創(chuàng)建繼承自SActionEffect的藍圖類Effect_Burning:

表示我們周期性給該Effect擁有者(debuff)施加傷害。(Apply Damage是之前我們寫的SGameplayFunctionLibrary里的函數(shù))

點擊上方類默認值,我們設(shè)置:

持續(xù)3秒燃燒效果,每秒因ExecutePeriodicEffect掉一次血

新加的燃燒Tag我們目前不用,后續(xù)可以根據(jù)此tag而添加Effect所有者的某些行為(Actor因燃燒而碳化,角色因燃燒而瘋狂)

我們希望在魔法球C++類中來給魔法球添加燃燒效果傷害。

頭文件添加:

cpp文件在傷害語句處改為:

意思是魔法球傷害到的Actor(有ActionComp)會被添加燃燒Effect。

我這里有個bug,就是AI死亡后,燃燒傷害會繼續(xù)施加給AI,每次受傷仍會觸發(fā)OnActorKilled函數(shù),給我們添加殺死AI的credits。我們到Attribute組件,找到ApplyHealthChange函數(shù)判定死亡的語句,把

小于等于改成小于就行了。

下面我們改進interaction組件。因為我們在此類做的只是通過碰撞query來執(zhí)行接口類的Execute_Interact函數(shù)。

SInteractionComponent.h

SInteractionComponent.cpp

接下來我們創(chuàng)建繼承自SWorldUserWidget的交互控件DefaultInteraction_Widget。按類的設(shè)定添加Canvas Panel、sizebox重命名ParentSizeBox。

添加文本,讓交互信息顯示在目標(biāo)上:

最后是布置作業(yè)6

首先我們添加Rage屬性。

在SCharacter添加Rage、RageMax,暴露在藍圖。

在OnHealthChanged函數(shù)添加

限制Rage在0到RageMax之間。

添加Rage_Widget怒氣控件,添加一個進度條即可,然后給進度條的進度值綁定函數(shù)。

由于黑洞Action使用藍圖實現(xiàn),我們只能在黑洞藍圖添加消耗Rage的邏輯。

在Action_Blackhole中重寫CanStart,當(dāng)Rage小于需要的怒氣值時不能開始Action:

在原有CanStart判定基礎(chǔ)上,添加Rage判定邏輯即可。

然后在發(fā)射黑洞后消耗RageCost=50點Rage:

現(xiàn)在的效果:

下面我們添加'Thorns' Buff荊棘(反甲)效果。

當(dāng)Duration為0時,此Effect激活后永久開啟。不為0時,按持續(xù)時間開啟。

我們直接從SAction繼承創(chuàng)建SActionEffectThorn類,因為SActionEffect類有些功能不必要(周期性),我們不從前者繼承。

SActionEffectThorn.h:

SActionEffectThorn.cpp:

此時直接給角色Action組件添加反甲效果,AI攻擊角色會受到50%的反甲傷害。我們發(fā)現(xiàn)角色燃燒效果也能夠給AI造成4*50%=2點傷害。

現(xiàn)在我們?nèi)∠催xAutoStart,添加Action映射,按T開啟Thorn效果。然后在角色類藍圖添加角色和Thorn效果的綁定:

并把Thorn效果的Duration從0改為3秒(如果仍設(shè)為0,開啟后將一直開著,不會自動關(guān))

現(xiàn)在按T開啟反甲效果,維持3秒。

下面我們添加AI發(fā)現(xiàn)玩家時的感嘆號控件。

在AI角色類添加感嘆號資產(chǎn),我們可以在藍圖為AI角色分配感嘆號藍圖:

在角色類OnSeePawn函數(shù)下添加:

創(chuàng)建繼承自SWorldUserWidget的控件藍圖PlayerSpotted_Widget,創(chuàng)建popin動畫,構(gòu)造節(jié)點后添加PlayAnimation節(jié)點即可。我們設(shè)置延時2秒后removefromparent移除控件。

最后我們創(chuàng)建授予玩家Dash能力的Powerup道具。

新建繼承自SPowerupBase的C++類SGrantDash:

編譯后,創(chuàng)建繼承自SGrantDash藍圖類GrantDashBP,分配DashActionClass資產(chǎn)為Action_Dash,mesh我選的一個藍色的十字。

最后把Dash功能從Default能力移除。

現(xiàn)在角色和藍色十字交互會擁有Dash能力。


斯坦福UE4C++課程P70-P73創(chuàng)建BUFF世界互動的評論 (共 條)

分享到微博請遵守國家法律
通许县| 黑龙江省| 福建省| 洱源县| 扶沟县| 安福县| 黄平县| 寿光市| 内江市| 囊谦县| 从江县| 社旗县| 兰考县| 亚东县| 淮阳县| 固安县| 专栏| 涞源县| 高阳县| 云浮市| 淄博市| 旬邑县| 鄂州市| 桃园市| 商都县| 济宁市| 梁山县| 宕昌县| 娄底市| 武汉市| 青海省| 肥城市| 洱源县| 南昌县| 赤水市| 沙田区| 额尔古纳市| 永年县| 金溪县| 丰都县| 民和|