Recientemente cambié mi motor de juego de comportamientos de dirección a movimiento basado en impulsos con una resolución de colisión adecuada basada en el tiempo. Esto ha resuelto tantos problemas (no más túneles, sí) y ha hecho que la simulación sea mucho más estable. Sin embargo, con la estabilidad ha llegado un nuevo problema.
Las tres bolas comenzaron su viaje cerca de la parte inferior de la imagen, su objetivo era donde se detuvo la bola rosa. En el camino, las bolas rojas y verdes se han quedado atascadas en el punto de estrangulamiento en la pared.
Antes, podía confiar en los errores de coma flotante y la inestabilidad general de los comportamientos de dirección para hacer que las bolas verdes y rojas se empujaran entre sí hasta que lograran atravesar el punto de estrangulamiento. Ahora con una resolución de colisión adecuada, las fuerzas que actúan sobre las bolas se cancelan entre sí, lo que hace que las bolas permanezcan perfectamente inmóviles.
¿Qué métodos se usan comúnmente para resolver tales situaciones? Quizás algún tipo de sistema de colas de prioridad funcionaría, aunque puedo ver que se vuelve complejo una vez que necesito decidir la prioridad entre más de 2 objetos.