虛幻四Gameplay Ability System入門(4)-治療效果

這次我們要實(shí)現(xiàn)的是一個(gè)治療回血的技能哀墓,它的效果是使用治療技能后角色的生命值會(huì)緩慢恢復(fù)。在這個(gè)效果上擎浴,我們希望實(shí)現(xiàn)通過Gameplay Cue實(shí)現(xiàn)角色使用恢復(fù)技能后身上會(huì)有一個(gè)特效玷禽,再第一次使用技能系統(tǒng)中的Tag標(biāo)簽。

首先還是從設(shè)計(jì)技能的流程開始舵抹。

  1. 使用技能需要消耗魔法值,但是我們之前創(chuàng)建的AttributeSet中只有生命值劣砍,所以首先需要添加一個(gè)Attribute Mana惧蛹,并初始化。
  2. 添加恢復(fù)技能刑枝,技能會(huì)播放一個(gè)Montage香嗓,播放完畢后向自己申請(qǐng)一個(gè)Gameplay Effect。該GE的效果是在一定的時(shí)間內(nèi)緩慢地增加生命值装畅。
  3. 創(chuàng)建一個(gè)Gameplay Cue靠娱,它會(huì)在GE的持續(xù)時(shí)間中在角色身上播放特效。
  4. 創(chuàng)建一個(gè)碰撞體掠兄,它可以取消帶有某一類Tag的GE像云,這樣我們就可以取消角色身上的治療效果。

法力值A(chǔ)ttribute

打開Rider, 首先在AttributeSetBase.h添加Mana Attribute

UCLASS()
class GAS_LEARN_API UAttributeSetBase : public UAttributeSet
{
    // ......
    // Mana
    UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Attributes", ReplicatedUsing=OnRep_Mana)
    FGameplayAttributeData Mana;
    ATTRIBUTE_ACCESSORS(UAttributeSetBase, Mana);

    UFUNCTION()
    virtual void OnRep_Mana(const FGameplayAttributeData& OldMana);
};
復(fù)制代碼

然后在AttritubteSet.cpp中實(shí)現(xiàn):

void UAttributeSetBase::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
    // ......
    DOREPLIFETIME_CONDITION_NOTIFY(UAttributeSetBase, Mana, COND_None, REPNOTIFY_Always);
}

void UAttributeSetBase::OnRep_Mana(const FGameplayAttributeData& OldMana)
{
    GAMEPLAYATTRIBUTE_REPNOTIFY(UAttributeSetBase, Mana, OldMana);
}
復(fù)制代碼

這里初始化的方法我還是使用了DataTable蚂夕。在數(shù)據(jù)表中添加一行數(shù)據(jù)迅诬。
1.png

如果不想用這種方法,也可以直接在之前創(chuàng)建的GE_AttributeDefault中通過添加一個(gè)Modifier來初始化Mana双抽。

Health Regen Ability

創(chuàng)建Gameplay Ability百框,命名為GA_HealthRegen。

大致的流程比較簡(jiǎn)單牍汹,首先通過Commit Ability來消耗法力值铐维,然后運(yùn)行Task PlayMontageAndWait,隨后向Owner申請(qǐng)一個(gè)Gameplay Effect(這里有個(gè)問題慎菲,應(yīng)該從On Compeleted鏈接Apply嫁蛇,然后從apply gameplay effect連接endability,結(jié)束能力)
2.PNG

這里消耗法力值同樣是通過Gameplay Effect露该,創(chuàng)建GE_HealthRegen_Cost睬棚。這里的邏輯比較簡(jiǎn)單,通過Modifer的Magnitude直接Add(笑) -20的Mana解幼。
3.PNG

想了想抑党,覺得這個(gè)技能應(yīng)該還需要一個(gè)冷卻時(shí)間,感謝GAS系統(tǒng)撵摆,它已經(jīng)幫我們?cè)旌昧溯喿拥卓浚獙?shí)現(xiàn)技能冷卻只需要一個(gè)GE即可。創(chuàng)建GE_HealthRegen_Cooldown特铝。

這里的實(shí)現(xiàn)方法為修改Duration Policy為Has Duration暑中,之前我們使用的一直是默認(rèn)的instant壹瘟,表示這個(gè)GE的效果和持續(xù)時(shí)間是瞬時(shí)的。然后設(shè)置Magnitude為5.0
4.PNG

最后還需要一個(gè)GE為HealthRegen的技能效果鳄逾,它的持續(xù)時(shí)間同樣應(yīng)該為Has Duration稻轨。創(chuàng)建GE_HealthRegen_Effect。

我們?cè)O(shè)置恢復(fù)效果的持續(xù)時(shí)間為5秒雕凹,在下方的Period從0改為0.2殴俱,表明這個(gè)技能效果每0.2秒觸發(fā)一次,最后添加一個(gè)modifier请琳,設(shè)置每一次觸發(fā)效果為增加生命值2.0
5.PNG

技能所需的所有GE都完成了粱挡,再次打開GA_HealthRegen,打開GA的Defualt Settings俄精。將我們剛才實(shí)現(xiàn)的Cost和Cooldown效果添加進(jìn)去询筏。
6.PNG

別忘了把GE添加上去哦(笑)
6.1.png

Gameplay Cue

創(chuàng)建Gameplay Cue,命名為GC_HealthRegen_Effect竖慧。這里選錯(cuò)了嫌套,應(yīng)該創(chuàng)建的是上面那個(gè)actor。
7.PNG

重寫Event HandleGameplayCue圾旨,它可以通過Event Type踱讨,當(dāng)效果剛剛啟動(dòng)后,就會(huì)在擁有者身上添加一個(gè)Emitter砍的,因?yàn)槲也皇翘匦煴陨福@里的特效就用UE4提供的燃燒特效吧,治療效果的特效是燃燒廓鞠,好像沒有什么問題帚稠。

這里連線錯(cuò)誤了,應(yīng)該連在Target上床佳。
8.png

在Default Setting中添加Gameplay Cue Tag中添加一個(gè)tag滋早。
9.png

為了能夠觸發(fā)這個(gè)效果,我們還需要打開GE_HealthRegen_Effect砌们,為這個(gè)效果添加一個(gè)Gameplay Cue杆麸,將它的tag設(shè)置為Ability.HealthRegen.Effect。同時(shí)將效果的AssetTag也設(shè)置為同樣的Tag浪感。
10.PNG

角色設(shè)置

BeginPlay中Give Ability
11.PNG

然后將Ability和輸入綁定昔头。,這里有一個(gè)測(cè)試GE影兽,它的效果是讓角色扣25血揭斧,之前重復(fù)類似的操作太多了,我就不具體展示了赢笨。

運(yùn)行游戲未蝌,看看效果。
12.PNG

取消治療效果

首先創(chuàng)建一個(gè)Actor茧妒,然后為它添加一個(gè)Box Collision萧吠。
13.PNG

通過Remove Active Effect With Tags,移除角色身上帶有Ability.HealthRegen.Effect標(biāo)簽的效果桐筏。
14.PNG

運(yùn)行游戲纸型。

沒有走入actor中,角色身上會(huì)燃燒梅忌。
15.png

走入actor后狰腌,燃燒效果被移除了。
16.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末牧氮,一起剝皮案震驚了整個(gè)濱河市琼腔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踱葛,老刑警劉巖丹莲,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異尸诽,居然都是意外死亡甥材,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門性含,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洲赵,“玉大人,你說我怎么就攤上這事商蕴〉迹” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵究恤,是天一觀的道長(zhǎng)俭令。 經(jīng)常有香客問我,道長(zhǎng)部宿,這世上最難降的妖魔是什么抄腔? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮理张,結(jié)果婚禮上赫蛇,老公的妹妹穿的比我還像新娘。我一直安慰自己雾叭,他們只是感情好悟耘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著织狐,像睡著了一般暂幼。 火紅的嫁衣襯著肌膚如雪筏勒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天旺嬉,我揣著相機(jī)與錄音管行,去河邊找鬼。 笑死邪媳,一個(gè)胖子當(dāng)著我的面吹牛捐顷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雨效,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼迅涮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了徽龟?” 一聲冷哼從身側(cè)響起叮姑,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎据悔,沒想到半個(gè)月后戏溺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屠尊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年旷祸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讼昆。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡托享,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浸赫,到底是詐尸還是另有隱情闰围,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布既峡,位于F島的核電站羡榴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏运敢。R本人自食惡果不足惜校仑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望传惠。 院中可真熱鬧迄沫,春花似錦、人聲如沸卦方。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至尘吗,卻和暖如春逝她,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背睬捶。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工汽绢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人侧戴。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像跌宛,于是被迫代替她去往敵國和親酗宋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容