Я недавно переключил свой игровой движок с рулевого поведения на импульсное движение с надлежащим временным разрешением столкновений. Это решило очень много проблем (больше не туннелирование, ура) и сделало симуляцию намного более стабильной. Однако со стабильностью возникла новая проблема.
Три шара начали свое путешествие в нижней части изображения, их цель была там, где остановился розовый шар. По пути красные и зеленые шарики застряли в узкой точке в стене.
Раньше я мог полагаться на ошибки с плавающей запятой и общую нестабильность поведения руля, чтобы зелёные и красные шары давили друг на друга, пока им не удалось пройти через точку дросселирования. Теперь при правильном разрешении столкновения силы, действующие на шары, взаимно компенсируют друг друга, в результате чего шары остаются совершенно неподвижными.
Какие методы обычно используются для разрешения таких ситуаций? Возможно, какая-то система очередей с приоритетом будет работать, хотя я вижу, что она становится сложной, когда мне нужно выбрать приоритет между более чем двумя объектами.