同一bpアクタをレベル上に複数配置したときの動作,

あるBPアクタをレベル上に複数個配置し、そのそれぞれが同じ操作に対して同じ動作をするようにしたいです。

具体的には、

・プレイヤーがアクタに近付きボタンを長押しする

・アクタのマテリアルが指定のものに変化する

それぞれのアクタで上記の動作をさせたいのですが、BPアクタを連番で複数配置すると

どのアクタに操作を行っても1番目に置いたアクタのマテリアルのみが変わってしまいます。

使用しているBPを添付致しますので、どなたかご教授いただければ幸いです。

図1 アクタ側のBP

図2 プレイヤー側のBP

,

原因はわからないのですが、これ全部を一気にデバッグするのは大変なので、少しずつ分けて調べてみてはどうでしょうか?

例えば、まずEventOccupy_TriggerのところにPrintStringノードだけつないでみます。
それでアクターの個数と同じ回数呼び出されればイベントの呼び出し自体は正常とわかります。
print内容はなんでもいいですが、selfを接続すると当該アクターの名前が出せます。

もし上記を試してprint回数が足りないなら、バインドの時点で何か問題がありそうです。
例えばアクター側が持ってるEventOccupyが想定と違うとか、空っぽになってるとかかもしれません。

print回数が正常なら、EventOccupy_Triggerの中身でトラブルが起きているはずです。
その場合も、まずは決まった色に変更するだけ、次にSwitchで切り替え、それも上手くいったらAddToViewportという風に、分けていくと原因が特定しやすいと思います。

Blueprintの構造は把握できましたが、分からない点が2点あります。
①アクタ側のBP、Beginplay直後でBindしているEventOccupyは何を指しているか
→EventOccupyの実体Objectが何なのかが少し分かり辛いです
②プレイヤー側のBP、CallEventOccupyでTargetに接続が無いのはどういった理由か
→ここでTargetに正しいアクタが接続されていれば、そのアクタに想定通りBindされるはずです

Engineのバグを踏んでいるような形跡はないですが、SetMaterialのTargetがローカルのComponentを指していることから、
BindされるActorの指定が常に1番目になってしまうのが問題であることが推測されます。
もう少しローカル環境にて切り分けを行っていただけると幸いです。
宜しくお願いします。

ご返答有難うございます。
①について、EventOccupyはプレイヤー側のBPであるPlayer型の変数です。
①,②の点ですが、まだ初めたばかりの身でしてこちらの記事(link text)を参考にEventDispatcher周りのBPを作っており、恥ずかしながら自分ではまだいまいち理解しきれていない状態でして…。

②の点が主に問題のようですが、Targetには何を接続すれば良いでしょうか?
初歩的なレベルで躓いており恐縮ですが、ご教授いただければと思います。

ご返答有難うございます。
PrintStringを繋いた結果出力回数が足りておらず、仰る通りEventOccupyの設定が空になっておりました…

その点の設定を見直した結果、全てのアクタのマテリアルが同時に変化してしまうようになりました。SetMaterialのTargetが適切でないのかとは思い至ったのですが、この場合何を接続するのが適切なのでしょうか?

よろしければ再度ご教授いただければ幸いに思います。

横から失礼します
EventDispatureというのはイベントを送りたい相手を指定しなくても【Bindしている全ての】アクタのイベントを呼び出します
そしてUnBindしない限りイベントは呼び出されてしまいます
上記BPにおいてはアクタ側のBPのEventBeginPlayにてBindしているために全てのアクタのマテリアルが同時に変化しているのだと思います

具体的な解決策としては
・アクタ側のBPのOnComponentBeginOverlap後にBind
・OnComponentEndOverlap後にUnbind
するといいのではないでしょうか

上のBPを元にした画像も添付しておきます

提示いただいた方法を試したところ想定通りの動作をさせることができ理屈も理解できました。
とても勉強になり、助かりました。有難うございました。