Tôi đang phát triển trò chơi 2D dựa trên nền gạch đơn giản. Tôi có một cấp độ, dân cư với các đối tượng có thể tương tác với gạch và với nhau. Kiểm tra va chạm với tilemap là khá dễ dàng và nó có thể được thực hiện cho tất cả các đối tượng với một phức tạp tuyến tính. Nhưng bây giờ tôi phải phát hiện va chạm giữa các đối tượng và bây giờ tôi phải kiểm tra mọi đối tượng chống lại mọi đối tượng khác, kết quả là độ phức tạp vuông.Tránh O (n^2) phức tạp cho phát hiện va chạm
Tôi muốn tránh sự phức tạp của hình vuông. Có bất kỳ phương pháp nổi tiếng nào để giảm các cuộc gọi phát hiện xung đột giữa các đối tượng hay không. Có bất kỳ cấu trúc dữ liệu nào (giống như cây BSP), có thể dễ dàng duy trì và cho phép từ chối nhiều lần va chạm cùng một lúc.
Ví dụ, tổng số đối tượng ở mức khoảng 500, khoảng 50 người trong số họ nhìn thấy trên màn hình tại một thời điểm ...
Cảm ơn!
bạn có muốn phát hiện va chạm cho tất cả hoặc chỉ cho các đối tượng hiển thị không? –
hm. chưa chắc chắn. Tôi nghĩ rằng tôi có thể bỏ qua va chạm với các đối tượng bên ngoài màn hình – SadSido
trong trường hợp đó bạn chỉ có thể thu thập các đối tượng hiển thị và phát hiện xung đột trên chúng. Vẫn O (n^2) thời gian phức tạp. –