Tengo un motor de física simple que resuelve colisiones simplemente corrigiendo la posición de los cuerpos superpuestos (solo círculos por ahora) directamente, en lugar de simplemente cambiar la velocidad o aplicar un impulso. La velocidad solo cambia después de que los impactos ya se han resuelto, o durante la parte de integración.
He tenido el problema de que en los montones de objetos los objetos superiores aplican demasiada presión (esto existe implícitamente, no hay modelado de presión en el algoritmo) sobre los objetos en la parte inferior del montón, lo que hace que sean empujados a través de los pisos, etc.
Quería arreglar esto ordenando los objetos por su coordenada y, para que las colisiones se resuelvan de abajo hacia arriba. Pero ahora, el motor muestra un comportamiento de estallido extraño para los objetos que realmente deberían estar en reposo (ver gif)
Sin solo darle el código fuente, ¿qué podría ser?