UE5 BPで「Gameplay Ability System」の「Gameplay Ability」を実行できるように登録する(GiveAbility、GameplayAbility)
BPで「Gameplay Ability System」の「Gameplay Ability」を実行できるように登録する方法です。
「Gameplay Ability System」についてはこちらが参考になると思います。
・【UE4】Gameplay Ability System を使い始めたい人向けの情報
https://qiita.com/sentyaanko/items/314ee39feb62ce67b885
公式ドキュメントはこちら。
・ゲームプレイ アビリティ システム(Gameplay Ability System)
https://docs.unrealengine.com/4.27/ja/InteractiveExperiences/GameplayAbilitySystem/
今回については「Gameplay Ability」を実行できるようにするだけのシンプルな実装についてだったのですが
こちらのサイトがすごいわかりやすくシンプルな説明になっていたので参考にさせていただきました。
・【UE5】GamePlayAbilitySystemによるコンボ攻撃の実装とそれに利用する小ネタ 前編【GAS】
https://lunanelis.hatenablog.com/entry/2022/06/07/023141
「Gameplay Ability BP」で作成した「Gameplay Ability」は
「Give Ability」によって登録しないと実行することができないようです。

「Target」には「Ability System Component」を指定します。
「Ability Class」には「Gameplay Ability BP」で作成した「Gameplay Ability」を指定します。
「Level」と「Input ID」については調べてもいまいちよくわからず…。知識不足なのでちゃんと調べないとですね…。
一応、こちらでそれっぽいことが説明されているようです。
・[UE] AbilityTask について全部書くよ
https://qiita.com/koorinonaka/items/cf26af4433fda41134ac
上記サイトに書かれているここらへんのようです。
とりあえずは「Ability Class」が指定してあれば、ただ実行するだけなら問題なかったのでそのまま進めました。
実際にはこんな感じで「Give Ability」ノードを実行しました。

「Ability List」という「Gameplay Ability」の配列をすべて登録する。といったものになります。
この「Ability List」は「TMap」を使っているのですが、
これについては実行するときに、定義名から「Gameplay Ability」を取得して実行する。
といったことをやるために、まずはこういった構成にしてみました。

登録するだけなら「TArray」でも問題ないと思います。
正確に理解するためにはちゃんと調べないといけないのでどこかでもっと追ってみようと思います。
「Gameplay Ability System」についてはこちらが参考になると思います。
・【UE4】Gameplay Ability System を使い始めたい人向けの情報
https://qiita.com/sentyaanko/items/314ee39feb62ce67b885
公式ドキュメントはこちら。
・ゲームプレイ アビリティ システム(Gameplay Ability System)
https://docs.unrealengine.com/4.27/ja/InteractiveExperiences/GameplayAbilitySystem/
今回については「Gameplay Ability」を実行できるようにするだけのシンプルな実装についてだったのですが
こちらのサイトがすごいわかりやすくシンプルな説明になっていたので参考にさせていただきました。
・【UE5】GamePlayAbilitySystemによるコンボ攻撃の実装とそれに利用する小ネタ 前編【GAS】
https://lunanelis.hatenablog.com/entry/2022/06/07/023141
「Gameplay Ability BP」で作成した「Gameplay Ability」は
「Give Ability」によって登録しないと実行することができないようです。

「Target」には「Ability System Component」を指定します。
「Ability Class」には「Gameplay Ability BP」で作成した「Gameplay Ability」を指定します。
「Level」と「Input ID」については調べてもいまいちよくわからず…。知識不足なのでちゃんと調べないとですね…。
一応、こちらでそれっぽいことが説明されているようです。
・[UE] AbilityTask について全部書くよ
https://qiita.com/koorinonaka/items/cf26af4433fda41134ac
上記サイトに書かれているここらへんのようです。
https://t.co/AgtR3eV8ST
— あいす (@koorinonaka) December 23, 2021
4.6.2 Binding Input to the ASC にInputPressed/Releasedへの実装が書いてあります。ちょっとこの辺は仕様がややこしいですね。。GiveAbilityで渡すFGameplayAbilitySpecに指定するInputIDが一致してればAbilityTaskのInputPressedでイベントが発行されるって感じです。
とりあえずは「Ability Class」が指定してあれば、ただ実行するだけなら問題なかったのでそのまま進めました。
実際にはこんな感じで「Give Ability」ノードを実行しました。

「Ability List」という「Gameplay Ability」の配列をすべて登録する。といったものになります。
この「Ability List」は「TMap」を使っているのですが、
これについては実行するときに、定義名から「Gameplay Ability」を取得して実行する。
といったことをやるために、まずはこういった構成にしてみました。

登録するだけなら「TArray」でも問題ないと思います。
正確に理解するためにはちゃんと調べないといけないのでどこかでもっと追ってみようと思います。
| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑