I’m using control rig to procedurally drive movement animations for my character. I have control rig physics set up, both collision and simulation space are set to world.
For copied static meshes physics are working as intended. Any form of instancing is completely unresponsive and have no collisions at all. I have tried ISM, HISM and Foliage
The collision preset I’m using with the instances is the same as the copies
The physics collisions are crucial for my movement system, and having to resort to using only copies would not be performant
ism doesnt support physics, maybe swap ism for sm on contact or hit?
Simple but works, thanks!
Here’s my method:
Add a sphere on the character. On comp overlap, from other comp cast to InstancedStaticMeshComponent, or better, use an interface. Get the instance index overlapping the sphere, spawn an actor with the same transform as the instance. The actor class is a child of the Static mesh actor with an InstancedStaticMeshComponent object ref variable exposed on spawn, this is passed by the overlapped ISM comp, so the actor itself stores the ref to the comp it “belongs” to. Then remove the instance or hide it and set it to NoCollision to avoid exess overlaps and spawing.
Then On comp end overlap with the actor add/unhide and instance to the actor’s ISMcomp object with the actor’s transform. Then destroy the actor.
I haven’t tested with super dense ISMs, maybe pooling the actors instead of spawning would be more performant.
Btw this also works for HISM and Foliage since they both inherit from the ISMcomp class.
i was experimenting with this some time ago trying to do destruction, i was also trying to use async for this which sort of worked but abandoned it when i got stuck on trying to do more structural damage
but swap from ism index to sm worked fine, good luck buddy