I’m making a map with some objects like street lights, signposts etc. which the player can drive into and knock down like in most open world games, but when i enable physics the objects fall over as soon as the game starts. How do i make them stand in place and only fall over when the car hits them?
Don’t simulate physics initially:
Only when it’s needed.
Alternatively, do simulate but make the meshes
This will actually work without any script.
Thanks for the advice, the Start Awake option works for me. But i’m running into an issue where one of the street lights would still fall over by itself, but only if i rotate it when placing it on the ground, if i don’t rotate it it works fine. All the other assets works fine as well regardless of the rotation. This is really weird, why would rotating an object cause this issue?
Is it only one? Perhaps it’s clipping the ground and waking up too early?
I already snapped it to the ground as best i can, and it seems to make no difference even if it’s not touching the ground, the only thing that causes it is if it has rotation value.
Also for context, this is happening inside a blueprint actor, i’m trying to make a road which i can place modularly. Outside of this, in the level editor, the same street light works fine when i rotate it. So weird.
Could you confirm this is happening to only one of them or all of them?
Also for context, this is happening inside a blueprint actor, i’m trying to make a road which i can place modularly. Outside of this, in the level editor, the same street light works fine when i rotate it.
Could you elaborate on the method? Add Static Mesh Component in the Construction Script?
Sorry if this wasn’t clear. So in my level i have these street lights (static meshes) placed around and the physics works as intended. I also have a blueprint actor which contains the same street light meshes placed on a road, those are having the issue with physics and the only way to solve it is by resetting the rotation to 0. Bascially, all of the street lights in the level work fine, but all of the street lights in the BP actor have this physics issue, and they’re the same asset.
Behaviour without rotation:
But if I add rotation:
They immediately wake up and fall. So pretty much as you said. A bug? Seems like it.
A potential workaround: create them Sleepy but without simulation → Rotate → Enable Sim:
Getting pretty consistent results with this. Do tell how it goes.
This order allows for some uncanny behaviours, too:
There’s also ISMs, all lamps start as instanced meshes - very efficient. When one is hit, you replace the instance with a simulating static mesh component. You can even keep a small pool of several of those at a ready - created but invisible / away. This would make it pretty performant and quite robust.
Doesn’t work on my end, maybe i missed something?
I also tried turning on physics on component hit, but then it doesn’t respond at all so no physics whatsoever when i collide with it.
The rotation messes things up when you use it like that, true - almost certain this part is buggy. But this seems to work well in those particular circumstances:
Thanks for the advice, this one works for me. It’s not the same as having simulation on by default, but it works so i’m happy. Thank you!