KBTIT_1
(KBTIT_)
1
この質問は非常に基本的なことなので、公式のドキュメントや解説のサイトがいくつか見つかるのですが、
UEのバージョンが4がベースでUIの違いで解説が理解できなかったり、条件が少し異なるため参考になりませんでした。
ですので、以下の条件でどのように変数をやり取りすればよいのか教えていただけないでしょうか。
・ブループリントを使用する。基本ですね
・インターフェイスを使用しない。シンプルな処理なのでインターフェイスを使用するのは手間です
・アクタは参照先のアクタを予め参照できません。例えば、マップに固定で配置されているアクタへの処理ではありません。
状況として、アクションゲームでアイテムを取得するようなものです。
この処理を行いたいと、以下のように変数と関数を作成した「ItemBlueprint」に「Item」タグを設定します。
そして、アクションのプレイヤー側に以下のようなノードを作成します。
プレイヤーの当たり判定周りは省略しますが、アイテムと重なった時に右の「PrintString」が表示されている状態です。
そして、ここからが本題なのですが、このOverLapしたアクタ。それにはItemタグがあり、「ItemBlueprint」BPであることは間違いありません。しかし、ここから変数や関数にアクセスする方法が分かりません。
Castは出来ますが、だからといってパブリックな変数にアクセスもできないため、Cast自体が間違っているのかもしれません。キャストした後に「CastToItemBluePrint」というのもありますが、そこからアクセスできるわけでもなく、ここで詰まっております。
本当に基本的な処理ではあると思うのですが、この解決方法を教えていただけないでしょうか。
T_Sumisaki
(T_Sumisaki)
2
画像にある OnComponentBeginOverlap
のある場所はプレイヤーですか?
であれば、参照するものが間違っています
Overlapped Component
に入っているのは、重なりを検知したComponentです
このBPがプレイヤーのものであれば、OverlappedComponent
はプレイヤー自身のもつCollisionです
Other Actor
がCollisionに入ってきたもの…つまりプレイヤーから見た相手Actorの情報になります
それがItemなのであれば、OtherActorをItemBlueprintにCastする(Cast to ItemBlueprint
を使う)、というのが正しい流れです
KBTIT_1
(KBTIT_)
3
ご回答ありがとうございます。
OnComponentBeginOverlapの間違いについては修正させていただきます。
そして本題であるCastToItemBluePrintの後はどのようにすればよいでしょうか。
CastToItemBluePrintの後に、ItemBluePrintに作成した変数名や関数名を入れても何も出てこない(アクセスできる機能を持つノードが無い)ため、アクセス方法が分かりません。
T_Sumisaki
(T_Sumisaki)
4
必要なのはクラスへのCastではなく、オブジェクト参照のCastです
クラス、ついているもの(紫色)はクラス情報でしかなく、実体ではないので、そこから変数にアクセスすることはできません
いうなれば、BPの設計図と、実際にSpawnしたActorの違いです
OtherActorから、 Cast To ItemBlueprint
を使ってCastしてください
入力も出力も水色のピンになるはずです
KBTIT_1
(KBTIT_)
5
ありがとうございます!
確かに Cast To ItemBlueprint
を使うことで、usedでノードの候補が表示され、Used変数にアクセスできるようになりました。