質問連投すいません
ベルトコンベヤーの役割を果たすActor BPを作って、それにプレイヤーが押すことのできるBoxBPをベルトコンベヤー上で流れさせようとしたところ、うまく行かなくって色々調べていたら"ActorBPのSimulate Physics"がONになっていたら"AddActorWorldOffset"が動かないんじゃないか と気が付きました
試しにBoxCollisionだけで生成されて、範囲内にあるものをすべてAddActorWorldOffsetで動かす MoverBPを作成しました
次にCubeだけで構成されたActorBPを作成して、レベル上で2つのBPを重ね合わせました
そしたら Simulate PhysicをOnにした場合は箱がMoveBPのエリア内に居ても動くことが出来なくなりました
何故SImulate PhysicとAddActorWorldOffsetが影響してるのかサッパリ予想できず…
箱を高所から落とす といったギミックを作りたいのでSimulate PhysicをONにしたいのですが、この問題を回避するにはどのような方法がありますでしょうか?
Meshが物理で動くのに、Actorの座標を動かしても動いて見えないという事象は、物理で動いているComponentがRootComponentではない、というのが原因と思われます
おそらくRootComponentがDefaultSceneRootのままなのではないでしょうか?
SimulatePhysicsを開始した時点で、ComponentのTransformは物理計算の結果を参照するようになります
SimulatePhysicsの対象がRootComponentであれば 物理計算のTransform=ActorのTransform
になるため問題ありませんが
RootComponentではない場合、ChildComponentは物理計算の結果を優先するため、ActorのTransformの変化に影響されなくなります
あたかもSimulatePhysicsに設定したComponentから下が切り離されたかのようになります
なお、AddActorWorldOffsetはきちんと動作しているはずです
Actorの座標を調べて確認してみると良いでしょう
回答ありがとうございます
ご指摘の通り
RootComponentがDefaultSceneRootのままだったのがいけなかったようです
T_Sumisakiさんの指摘を元に検索したら、以下のサイトでも説明されていました
https://unrealengine.hatenablog.com/entry/2015/11/08/120000
まさかコレが原因だったとはビックリです…
でもおかげさまで無事解決できました!ありがとうございます~!