Ui内の可視性制御について

操作キャラクターがあるアクタに近づくと文字などを表示するようにしたいのですが、どうしてか上手く行きません。

対象のアクタにフラグとしてbool型の変数と球型のコリジョンを持たせ、コリジョンとキャラクターがオーバーラップすると変数が真になる。
UIのバインディングからアクタをキャストし、フラグを読み込んでその値によってvisibllityを変更すれば良いものだと思ったのですが…

下に使用するBPのスクリーンショットを添付しますので、初歩的な質問で申し訳ありませんがどなたかご教授いただけると助かります。

対象アクタ(Tower)のBP

プレイヤーアクタ(Player)のBP

UIのバインディングBP

Castの使い方は想像してることとちょっと違う気がします。

[ブループリントでキャストする][1]のドキュメントに細かい説明がありますが、基本的にあるクラスのサブクラスをアクセスするための関数です。変な例えですが、果物クラスのものがあったら、それがりんごであるかを確認して、りんごのプロパティーをアクセスしたい場合に、その果物に「Cast To Apple」みたいなことをします。

ということで、2つ目の画像のCast To Towerの後に何も接続されていないので、TowerであってもTowerじゃなくても、何もしません。

同様に、3つ目の画像で、Player CharacterからCast To Towerにしようとしてるけど、TowerはPlayer Characterのサブクラスではなければ、そのキャストは必ず失敗します。

アクタに近づくと文字などを表示したいなら、ラーニングタブの「UMGインベントリーUI」というサンプルプロジェクトは参考になるかと思います。その中のCanPickupブループリントを見てください。UMGの3D Widgetコンポーネントが追加されています。色々アイテムの情報が含まれてちょっと複雑ですが、以下のスクリプトの部分が見せたいポイントです。

アイテムのコリジョンにオーバーラップがある際に、Cast To MyCharacterでオーバーラップしたのはプレイヤーかどうかを確認します。プレイヤーである場合に、アイテム名のWidgetをViewportに追加します。プレイヤーが離れるとWidgetをViewportから外します。

ご指摘有難うございます。
キャストの使い方を間違っていたのですね…キャストノードの使い方についてはご教授いただいたお陰で何となくですが理解できたように思います。
提示いただいた方法で問題を解決することができました、有難うございました。