T_Sumisaki
(T_Sumisaki)
1
ガラスの球体のブループリント Collision>コリジョンプリセット>Collision Enabled はNo Collision になっています
まずこの部分を修正してください
OverlapやHitのEventを発生させるためには、ぶつかりあうObjectはお互いにCollisionが有効でないとダメです
NoCollisionに設定すると、文字通りCollisionが無効化されるため、Collision関連のEventであるOverlapやHitが発生しなくなります
今回はObjectが重なる想定のようですので、OverlapAllDynamicあたりが妥当でしょう
Collision関連のイベント発生条件について詳しく知りたければ、下記のスライドが参考になります
また、 AddInputMovement
ノードはPawnの移動入力に使われるノードであり、添付されている画像のような使い方をしても期待通りには動かないかと思います
(Directionは 方向
であり、移動の大きさではありません)
対象がCharacterであれば LaunchCharacter
、物理で動作している物体であれば AddForce
、それ以外のMovementComponent等で動作しているのであればVelocityの書き換えによって実装することをおすすめします
GNK4869
(GNK4869)
2
スポーンさせたアクターの中にキャラクターやオブジェクトなどの物体が入ったら、その物体の運動を加速させたいのですがうまくいきません。
例として、下の図1のように、ガラスの球体に入りかけている白い球体が転がってきた向きに移動速度が大きくなる ということです。
ちなみにスポーンさせるアクターの、ガラスの球体のブループリント Collision>コリジョンプリセット>Collision Enabled はNo Collision になっています。
アクターのブループリントは図2のようになっています。
どなたかご教授お願い致します。
図1

図2
GNK4869
(GNK4869)
3
ご回答ありがとうございます。
指摘された点は修正して以下のようになりました。
しかし、AddForceでスフィアやキューブを動かそうとすると、接触していないキャラクターの方が動いてしまいます。ターゲットが間違っているのでしょうか?
何度もすみませんがよろしくお願いします。
T_Sumisaki
(T_Sumisaki)
4
ターゲットが間違っていると思います
画像から見るところ、ActorBeginOverlapを見ると、何がぶつかってもPlayer0のCharacterに対してLaunchCharacterが実行されています
ぶつかった物体に何かをしたい、というパターンであれば、Eventノードから出ているOtherActor(ぶつかったActor)をターゲットにしなければなりません
また、HitEventのほうも間違いかと思われます
HitしたときにMyComp、つまりぶつかられた方のComponentに対してAddForceしています
コレが正常に実行された場合、このBP自身が動くことになります
移動する側の実装次第ですが、別方向からのアプローチもおすすめします
移動する側がCharacterであれば、CharacterMovementをもとに動いているはずなので、ぶつかられる側のBPのBeginOverlapでCharacterMovementのMaxWalkSpeedを大きく、EndOverlapでCharacterMovementのMaxWalkSpeedを小さくすることで速度変化を起こすことが可能です
移動する側がそれ以外のActorの場合、多くはAddWorldOffsetで動いていると思われますので、Actor側にBool変数を一つ用意し、ぶつかられる側のBeginOverlapでその変数をTrueに、EndOverlapでその変数をFalseにするようにします
その変数がTrueのときに、Actorの移動量を大きくすれば、速度変化を起こすことができるようになります
以上、参考になれば幸いです
GNK4869
(GNK4869)
5
返信が遅くなりすみません。
解決することができました。解答ありがとうございました。