生成したアクタへの生成元アクタを変数として渡したい

マルチプレイの状態で、プレイヤーアクタ(添付画像上)が生成した、Blockアクタ(添付画像下)に、生成したプレイヤアクタとしてBlockアクタの変数Owner Objectとして渡そうとしています。

Blockアクタ内にて、Get Player Pawnを入れた際には正常に動きますが、これだとサーバープレイヤー指定になってしまいそうなので、
プレイヤアクタ側で変数を指定しようとしています、ですがエラーとして

ブループリントランタイム エラー:“プロパティ K2Node_DynamicCast_AsBP_Third_Person_Character の読み取りを試行するためのアクセスはありません”。 ノード: Set Actor Location グラフ: EventGraph 関数: Execute Ubergraph Block Cube ブループリント: Block_Cube

が大量に出てきてしまい、正常に稼働しません。
生成先アクタへどのようにすれば、生成元アクタを渡せるでしょうか。
色々試しましたが分からず、何卒宜しくお願い致します。

まず自分自身(この場合生成元アクタ)を変数にしたい場合はselfというノードがあるのでそれを使うと良いです。

で、2枚目は組み方が色々と気になりますがざっくり解決策をお話ししますと。
まずOwnerObjectの変数設定からスポーン時に公開にチェックを入れてください。そうするとSpawnActor Block CubeノードにOwnerObjectを入力するピンが生成されます。(ノードの更新を行うかわからなければ一度ノードを削除して作り直してください。)

そのピンにSelfをつければ多分要件が満たせると思います。

1 Like

渡すActorの型が決まっているのであれば、先のアドバイスに従うと良いと思います

スポーン時に公開にチェック

特に決まっておらず、渡された側でCastするのであれば、SpawnActorFromClassのOwnerにセットし、 GetOwner で取得することが可能です

1 Like

お二方ともありがとうございます!
無事に頂いた内容で解決することが出来ました!

2枚目の組み方変ですいません!
まだBP始めたばかりの勉強中でして、もしお時間ありましたら、どのあたり書き方としてよろしくないかおかしいのか教えて頂けると今後のために大変ありがたいです。

どのあたり書き方としてよろしくないか

他のイベントの内容を引っ張ってきてはいけません

BeginPlayのCast結果をTickで使っていますが、タイミングの異なるイベントから結果を横取りすることは、トラブルの原因になります
今回はBeginPlayが先に動いているため、Editor上では結果的に問題がないように見えますが、関数やイベントの結果を別のイベントで使いたい場合は、変数を使う必要があります

1 Like

なるほど、ありがとうございます!
一度変数に変換してから使おうと思います、ありがとうございます!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.