Rwi
(Rwi)
1
「極め本」を終えたばかりのUE4初心者です。急を要する問題ではありませんが、後学のために質問をさせていただきます。
Begin Overlapイベント実行時、プレイヤーキャラにヒットしたアクターが持つ「GameplayTag」を調べる方法について。
AnswerHubの過去の投稿を参考に、このように実装が一応できました。
しかし、この方法だとヒットしたアクターのクラスがあらかじめ分かっている場合のみ、実装が可能なように思います。
このように、ヒットするであろうアクターのクラスが不明な場合でも、そのアクターが持つGameplayTagを取得することは出来るのでしょうか?(この画像の場合、Get Owned Gameplay Tags の出力 Tag Container が空を返してしまうためか、正しく機能しませんでした・・・。オブジェクトリファレンスからGameplayTagを調べることは出来ないのでしょうか?)
(補足)「GameplayTag」ではなく、通常の「Tag」を使用する場合は以下の方法で実装できました。このような感覚でGameplayTagが取得できれば・・・と思います。
まずはGameplayTagAssetInterfaceを実装しましょう…と言いたいところですが、どうやらこのInterfaceはC++からでないと実装できないようです
(実装しようとしてもImplement Interfaceの選択肢に出てきませんでした)
ですので、BPのみで実現したい場合は自分でInterfaceを作るほうが楽かと思います
まずはGameplayTagContainerを取得するBlueprint Interfaceを作成します
次にGameplayTagを設定・取得したいActorにInterfaceを実装し、ActorのVariableとして持たせたGameplayTagContainerを返すようにします
あとは自作のInterfaceを通してGameplayTagContainerを取得するようにすれば、理想の形になるでしょう
GameplayTagの配列ではなくGameplayTagContainerを使用する理由は以下の記事を読むと分かりやすいかと
UE4 Gameplay Tagを使ってゲームプレイ時のタグ管理をより扱いやすくする
似たようなスレッドがあったので参考にリンクを貼っておきます
Gameplay tag / Damage event / Can´t get tags from projectile
Rwi
(Rwi)
3
申し訳ありません!通知に気付かず、頂いた回答を長らく見逃しておりました。
大変遅くなりましたが、頂いた解説と下記の記事を参考に、ご教授いただいたものと同様のBlueprint Interfaceの実装と、正常な動作の確認を行うことができました。
http://unrealengine.hatenablog.com/entry/2014/09/23/201458
頂いた知見をこれからのゲーム作りに役立てていきたいと思います。
丁寧でわかりやすいご回答を、どうもありがとうございました!