ネリスさん備忘録

主にUE4の備忘録を残すよ!

【UE4】GameplayAbilitySystemについての走り書き

GameplayAbilitiesの使い方(セットアップ編) - おかわりのアンリアルなメモ

上記ブログを参考にして移して、理解したことを自分向けに再説明する。

 

C++前提であること

まず、デフォルトでプラグインは入っていないのでプラグインの設定

そのうえで、Build.csに"GameplayAbilities"を追記

 

任意の(ブログではCharacter)クラスに"AbilitySystemInterface"を多重継承させる

 

クラスにAbilitySystemComponentのメンバを追加し、ゲッターも追加

このAbilitySystemがタグ等を管理している本体か

AbilityListと名前が付けられたメンバはスキル一覧のようなもの。

ゲーム起動時にBeginPlayによって登録が行われるとのこと。

作り方によっては後付けもできるんちゃうかなこれ

 

f:id:LunaNelis:20211108031904p:plain

 

Abilityの作成

GameplayAbilityクラスを継承して作成。

ActivateAbilityイベントで始まり、OnEndAbilityイベントで終了する

始めるときにCommitAbilityノードを呼び出して開始し
終了したいときはEndAbilityノードを呼び出す

 

CommitAbilityは後に出てくるEffect等の反映という理解でいいのかな
たしかデータアセットがどうとかの話もあったし、それのリアルタイム反映がコレか

そのへんはここで

UE4 GameplayAbility Pluginについてのメモ - Qiita

 

GameplayAbilityクラスでアニメーションをさせる場合、専用のモンタージュ再生ノードがある

f:id:LunaNelis:20211108033108p:plain

使い方は普通のPlayMontageノードとほぼ同じ

他の要因でこのアビリティをキャンセルされた場合に出てくるノードっぽいのがある

 

ただ、通知が出たときに実行されるノードがないのが大きな違い。

あとで出てくるノードによってこれを補完している。

f:id:LunaNelis:20211108033402p:plain

とにかくアビリティの発動が終わったらEndAbilityして終了

アビリティを作成したら、キャラクターに登録

f:id:LunaNelis:20211108033545p:plain

 

TryActivateAbilityByClassノードでアビリティを実行

f:id:LunaNelis:20211108033617p:plain

トライと書いてある通り、できない状況ならやらないというノード。

できるかできないかはタグで決定。

X.Y.Zの形式で追加できる。

f:id:LunaNelis:20211108033722p:plain

 

ちなみに、SendGameplayEventtoActorノードを使うことで

f:id:LunaNelis:20211108034034p:plain

アビリティのWaitGameplayEventノードにデータをディレイをかけて送ることができる

f:id:LunaNelis:20211108034107p:plain

これを使ってMontageで当たり判定を生成

当たり判定がSendGameplayEventtoActorを実行し当たった対象を送る

送られてきたときにこのノードが起動し、何らかの処理を実行する。といったことができる。



 

とりあえずここまで