Tôi hiện đang làm việc trên một 2D bắn chúng lên loại trò chơi, và tôi đang sử dụng một cây quad cho phát hiện va chạm của tôi. Tôi đã viết một cây quad làm việc một cách chính xác đẩy các diễn viên của tôi vào các nút/lá họ thuộc về trong cây. Tuy nhiên, tôi có một vài vấn đề.QuadTree cho phát hiện va chạm 2D
Thứ nhất, làm cách nào để thực sự sử dụng quadtree để chọn đối tượng khác mà đối tượng cần kiểm tra va chạm? Tôi không chắc chắn về cách thực hiện điều này.
Sẽ trả lời câu hỏi thứ hai. Giả sử tôi có một đối tượng trong nút không phải là hàng xóm của một nút khác, nhưng đối tượng đủ lớn để mở rộng một vài nút, làm cách nào tôi có thể kiểm tra một vụ va chạm thực sự, vì tôi đoán cây có thể xem xét nó không đủ gần để va chạm với các đối tượng trong một nút "xa"? Các đối tượng không hoàn toàn vừa với một nút có được giữ trong nút cha không?
Trong trò chơi của tôi, hầu hết các vật thể có kích thước khác nhau và di chuyển xung quanh.
Tôi đã đọc một số lượng lớn các blog/bài viết về quadtrees nhưng hầu hết chỉ giải thích cách xây dựng một cây không thực sự là những gì tôi đang tìm kiếm.
Mọi trợ giúp/thông tin đều được chào đón.
Nếu trò chơi bạn đang tạo thực sự giống như video bạn đã liên kết, bạn không nên sử dụng chỉ mục không gian nào cả, Danh sách các đối tượng chưa được phân loại sẽ vẫn có thể nhanh hơn tới vài trăm đối tượng di chuyển. – SingleNegationElimination
Phụ thuộc vào xung đột mà tôi nghĩ ... có lẽ là do va chạm dựa trên vòng kết nối, có thể không phải dựa trên pixel. Ngoài ra, đối với số lượng thấp các đối tượng tìm kiếm các nước láng giềng trong danh sách được sắp xếp theo thứ tự 1D, thường là nhanh nhất, IIRC. Nhưng thực hiện một quadtree làm việc là giá trị nó cho kinh nghiệm tuyệt đối. (Và ngoài ra, đạn bắn đạn xu hướng địa ngục có thể có hàng trăm vật thể di chuyển dễ dàng :)) – Kos