KRNKRS
(KRNKRS)
1
「Add Child Actor Component」で子として追加したBP(以下子BP)に対して、プレイヤーの移動入力値「Input Axis MoveForward」等の値を渡したいと考えています。
しかし、「Add Child Actor Component」で追加したのはあくまでアクターでありBPでない為、子BP内の関数を呼び出したくてもできないでいます。キャストすれば行けるのかとも思いましたがそれもできないようで悩んでいます。
具体的にどういう風にしたいのかと言いますと、ブースターの動きを制御するBPをゲーム実行時にプレイヤーに追加し、プレイヤーの移動に合わせて挙動を変化させたいのです。
イベントディスパッチャーを使えばとも思いましたが、ブースターは複数ある上、それらBPに毎フレームイベントを発行しまくるのはよろしくないのではと思いなるべく使用しない方向で行きたいと思っています。
どうにかして子BPにアクセスできるような方法はありませんでしょうか。
よろしくお願いいたします。
1 Like
alwei
(alwei)
2
親側に子BPを追加した際に、その子BPのクラスを変数として保存していれば、親から子のアクターとなっているBPの関数を呼び出すことができます。
特にその実装で問題ないと思いますが、他になにか問題がありますでしょうか?
takanyan7
(takanyan7)
3
キャストができないとゆーことで、
Child Actor Componentをそのままキャストしていたのではないでしょうか?
Child Actor Component→get Child Actor→Cast~
で通るかと思います。
後は作り方によりますが、Castは単一のクラスを対象な事と、
キャスト先が増えるとコンパイル時間も増えていきますので、
BPインターフェイスを使ったほうがいいかもしれません。
KRNKRS
(KRNKRS)
4
補足です。
「Add Child Actor Component」で追加したアクターは「AttachToComponent」でソケットにアタッチしています。
1 Like
KRNKRS
(KRNKRS)
5
補足2です。ブースターの子BP化は味方にもつけるので、「Get All Actors of Class」でブースターBPを全取得して…みたいなことはできません。あくまで、生成したその場で関連付けを行いたいです。
KRNKRS
(KRNKRS)
6
返信ありがとうございます!
takanyan7さん
確かにそのままキャストしようとしてました。
get Child Actorを経由すると無事変換でき関数も無事呼び出されるようになりましたありがとうございます!
alweiさん
確かにクラスからスポーンさせて操作することが出来ました。
ケースバイケースでどちらを使うか決めようと思いますありがとうございました!