Làm thế nào tôi có thể thực hiện phản ứng va chạm hình chữ nhật?


7

Tôi đang làm việc với một trò chơi bằng JavaScript và việc triển khai va chạm hiện tại của tôi sử dụng khoảng cách ngắn nhất để đẩy đối tượng giao nhau đi, điều này không phải lúc nào cũng đúng. Tôi đã thực hiện sơ đồ này của vụ va chạm lý tưởng. Hộp màu đỏ đại diện cho vị trí bắt đầu, hộp màu xanh lá cây đại diện cho vị trí thích hợp và hộp màu đen đại diện cho đối tượng tĩnh mà nó đang va chạm. Mũi tên màu xanh là vectơ vận tốc. Với triển khai hiện tại của tôi, đối tượng sẽ được đặt ở vị trí cuối cùng và đẩy ra (và trong trường hợp này nó sẽ bị đẩy sang trái)

Sơ đồ va chạm

Làm thế nào tôi có thể sửa lỗi này?

Câu trả lời:


2

Theo thủ tục, bạn có thể tìm hiểu cách thực hiện theo dõi AABB / AABB di chuyển với các công thức trên trang này.

http://www.realtimerendering.com/intersections.html

Về cơ bản các phương trình đó sẽ cho bạn biết bao nhiêu phần trăm di chuyển của bạn, bạn nên thực hiện khung đó, điều này sẽ cho phép bạn đặt hình vuông của bạn ở vị trí chính xác.


Điều này có vẻ rất hứa hẹn. Chiếc bàn đó trông rất tiện dụng cho tương lai. Cảm ơn!
Ryan S

0

Có một vài cách để làm điều này, nhưng một cách dễ dàng là tìm kiếm nhị phân theo dòng thời gian giữa khung cuối cùng và khung hiện tại. Giả sử khung cuối cùng ở thời điểm t và khung này ở t + 1. Nếu xảy ra va chạm, hãy sao lưu các đối tượng thành t + .5. Nếu va chạm vẫn xảy ra, hãy thử t + .25, nếu không thử t + .75. Tiếp tục đi cho đến khi các bước là đủ nhỏ. Sau đó làm bài kiểm tra của bạn cho khoảng cách ngắn nhất đẩy trở lại. Sau đó, đảm bảo phát về phía trước khoảng thời gian còn lại (vì bạn đã sao lưu để tìm điểm va chạm.)

Điều quan trọng là phải đến gần thời điểm đó nhất có thể, vì điều đó chắc chắn sẽ cho bạn biết khuôn mặt nào va chạm với khuôn mặt nào khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.