Tôi đang cố gắng thực hiện một hệ thống va chạm trong trò chơi 2D tôi đang thực hiện. Định lý trục tách (như được mô tả trong hướng dẫn va chạm của metanet ) có vẻ như là một cách xử lý phát hiện va chạm hiệu quả và mạnh mẽ, nhưng tôi không thích phương pháp phản ứng va chạm mà họ sử dụng. Bằng cách dịch chuyển một cách mù quáng dọc theo trục ít trùng lặp nhất, thuật toán chỉ cần bỏ qua vị trí trước đó của vật thể chuyển động, điều đó có nghĩa là nó không va chạm với vật thể đứng yên quá nhiều khi nó đi vào nó và sau đó bật ra.
Đây là một ví dụ về tình huống có vấn đề:
Theo phương pháp SAT được mô tả ở trên, hình chữ nhật đơn giản sẽ bật ra khỏi hình tam giác vuông góc với cạnh huyền của nó:
Tuy nhiên, trên thực tế, hình chữ nhật nên dừng ở góc dưới bên phải của tam giác, vì đó sẽ là điểm va chạm đầu tiên nếu nó di chuyển liên tục dọc theo vectơ dịch chuyển của nó:
Bây giờ, điều này có thể không thực sự quan trọng trong quá trình chơi trò chơi, nhưng tôi muốn biết liệu có cách nào hiệu quả và thường đạt được các chuyển vị chính xác theo cách này. Tôi đã sử dụng bộ não của mình trong vài ngày qua và tôi chưa muốn từ bỏ!
(Đăng chéo từ StackOverflow, hy vọng điều đó không trái với quy tắc!)