Hi, I noticed that static meshes report overlapping actors mostly correctly, but for some reason, instanced meshes sometimes report overlapping actors, and sometimes do not report anything at all, and this can be affected by mobility setting. I’m not sure if this is intentional, so I’ll just proceed to report this as if it’s a bug.
To reproduce this:
I’m using a heavily modified rolling ball game UE4 project - tho I Imagine this can be reproduced in other projects.
- Create a blueprint actor
- Add an instanced static mesh Component
- Set the static mesh to anything that has collision - I chose “MaterialSphere”
- Add an instance by hitting the + sign
- Make sure Mobility is set to Static
- Ensure generate overlaps is enabled
- Set collision Preset to either “Overlap all” or “trigger” - I chose trigger
- drag the blueprint into the viewport so that it clearly overlaps another mesh
- Setup the blueprint event graph as follows:
If everything was done correctly, then every 0.2s, it should print nothing. If you move the pawn over the blueprint, then it should print the display name of the pawn actor. I expected this to print the names of overlapping static meshes and other blueprint actors, but apparently it does not do this unless something moves on top of the blueprint - such as a pawn.
Now, go back to the blueprint and change the mobility setting of the Instanced Static mesh to “Stationary”. Now if you test, it won’t print anything, even the pawn actor. Everything is ignored.
Setting mobility to “Movable” produces the same result as “static”.
So, long story short, “Movable” and “Static” only report the pawn, or actors that move over the blueprint. Actors that do not move do not get reported as overlapping.
This contrasts the behavior of a simple Static Mesh Component, which reliably reports all overlapping actors, including non moving ones, in all 3 mobility states.
Is this a bug, or is it intended behavior? Very curious to know. Hopefully I didn’t miss any steps and you are able to reproduce this!