UE5 BPで「Gameplay Ability System」の「Gameplay Ability」を実行する(TryActivateAbility by Class、TryActivateAbility by Tag、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」は
「TryActivateAbility by Class」ノードで実行することができます。

「Target」には「Ability System Component」を指定します。
「In Ability to Activate」には「Gameplay Ability BP」で作成した「Gameplay Ability」を指定します。
「Allow Remote Activation」はちょっとわからなかったです。
・Try Activate Ability by Class
https://docs.unrealengine.com/4.27/en-US/BlueprintAPI/Abilities/TryActivateAbilitybyClass/
上記公式ドキュメントでは以下のように書かれています。
ちなみに参考サイトさんでは「TryActivateAbility by Tag」ノードを使われています。

調べてみるとほとんどのサイトでは「Tag」を使った運用をしているので
「TryActivateAbility by Tag」ノードを使っているのですが
自分としては「Tag」の運用はちょっと管理が煩雑になりそう(これは自分的な運用のイメージです)だったので、
直接指定する「TryActivateAbility by Class」ノードを使うことにしました。
実際にはこんな感じで「Gameplay Ability」を実行しました。

この「Ability List」は「TMap」を使っているのですが、
これについては実行するときに、外部から指定した定義名から「Gameplay Ability」を取得して実行する。
といったことをやるために、こういった構成にしてみました。

とりあえずこれで「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」は
「TryActivateAbility by Class」ノードで実行することができます。

「Target」には「Ability System Component」を指定します。
「In Ability to Activate」には「Gameplay Ability BP」で作成した「Gameplay Ability」を指定します。
「Allow Remote Activation」はちょっとわからなかったです。
・Try Activate Ability by Class
https://docs.unrealengine.com/4.27/en-US/BlueprintAPI/Abilities/TryActivateAbilitybyClass/
上記公式ドキュメントでは以下のように書かれています。
とあるので、シングルプレイなら「Allow Remote Activation」は「false」で問題なさそうかなと思います。If bAllowRemoteActivation is true, it will remotely activate local/server abilities,
if false it will only try to locally activate the ability
(bAllowRemoteActivationがtrueの場合、ローカル/サーバーのアビリティをリモートで起動します。
falseの場合、ローカルでの起動のみを試みる。)
ちなみに参考サイトさんでは「TryActivateAbility by Tag」ノードを使われています。

調べてみるとほとんどのサイトでは「Tag」を使った運用をしているので
「TryActivateAbility by Tag」ノードを使っているのですが
自分としては「Tag」の運用はちょっと管理が煩雑になりそう(これは自分的な運用のイメージです)だったので、
直接指定する「TryActivateAbility by Class」ノードを使うことにしました。
実際にはこんな感じで「Gameplay Ability」を実行しました。

この「Ability List」は「TMap」を使っているのですが、
これについては実行するときに、外部から指定した定義名から「Gameplay Ability」を取得して実行する。
といったことをやるために、こういった構成にしてみました。

とりあえずこれで「Gameplay Ability」を実行するところまでは実装できました。
まだ基礎の基礎部分だと思いますので、詳しい使い方を色々と調べていこうと思います。
| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑