Trong một công cụ vật lý mà tôi đang phát triển (để học) sử dụng love-2d , tôi đã thực hiện các giải pháp va chạm theo cách này:
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
...
Như bạn có thể thấy ở phần cuối của hình ảnh động gif, có một phân rã FPS khi tất cả các trình thu thập gần như được nối đất trên một vật thể tĩnh.
Điều này là do số lượng độ phân giải va chạm tăng lên khi các đối tượng dành nhiều thời gian chạm vào khi chúng giải quyết. Tuy nhiên, nhiều tính toán là "vô dụng" vì các đối tượng đã ổn định vị trí ổn định với nhau.
Cách thực hành tốt nhất (hy vọng không yêu cầu bằng cấp vật lý) để tránh những phát hiện va chạm "vô dụng" này là gì?
Chỉnh sửa: gợi ý DMGregory được chấp nhận và đi đến kết quả này (chưa tối ưu)
(Đỏ = tĩnh, Xanh lam = hoạt động, Xanh lục = ngủ)