love-2d를 사용하여 (학습을 위해) 물리 엔진 에서 다음과 같이 충돌 해결을 구현했습니다.
FixedUpdate(dt) // I use fixed timestep
foreach collide c1 in allNotStaticColliders
c1.integartePhysic // i.e. apply gravitational force..
foreach collider c2 "near" c1 // "near"= I use spatial hashing
if collide(c1,c2)
resolve collision (c1,c2) // the heavy operation
collison callbacks c1
collison callbacks c2
...
gif 애니메이션의 끝에서 볼 수 있듯이 모든 충돌체가 정적 객체 위에 거의 접지되면 FPS 붕괴가 발생합니다.
이것은 충돌 할 때 물체가 만지면 더 많은 시간을 보내면서 충돌 해결 수가 증가하기 때문입니다. 그러나 객체가 이미 서로에 대해 안정적인 위치에 정착했기 때문에 많은 계산이 "무용지물"입니다.
이러한 "불필요한"충돌 탐지를 피하기위한 최선의 방법 (물리학 학위가 필요하지 않음)은 무엇입니까?
편집 : DMGregory 힌트를 수락 하고이 결과를 얻습니다 (아직 최적은 아님)
(적색 = 정적, 청색 = 활성, 녹색 = 수면)