In my game, weapons spawn from the air and fall to the ground, like in Smash Bros. The problem is that, no matter what type of collider I use, the falling weapons will fall from the sky, land on a previous weapon, and stay perfectly balanced on top of it. It basically creates little towers of baseball bats and such. What am I doing wrong? Physics-wise, is there something I’m missing to tell the objects to tip over and fall more realistically? I do have a physics material attached that has some bounciness to it, but that doesn’t solve the problem either.
You are expecting objects to bounce to the side or have some variation right? Since that’s the realistic physics behaviour. However, you have to remember why that happens: air resistance, micro imperfections in object’s surfaces and several details like that are the ones that produce realistic physics. Game engines have a much more simplistic representation of physics, for performance and heuristics probably.
The colliders of your weapons are identical, the force applied to them is exactly the same, they are most likely spawning in the same exact point, with the exact same rotation and scale, thus they fall in a perfect stack. There are several ways to avoid that behaviour. I’m gonna just list some:
- Spawn them not in exactly in the same point. Add some little randomness to the spawn point, a bit to the left/right should suffice.
- Spawn them with different rotations.
- Add a small force to them with a random direction when they’re spawned
- Add a small force to them with a random direction when they collide with other weapons
- Add random torque to them when spawned.
You could use just one or any combination of these suggestions, they all result in a more random fall.
I think the point is clear, if not, feel free to ask!
Hope this helps!