Nhìn vào hệ thống phân cấp khối lượng giới hạn (BVH). Chúng thường được sử dụng nhất trong phát hiện va chạm để giảm số lượng kiểm tra cần thiết khi tính toán va chạm hoặc trong kết xuất để thực hiện loại bỏ sự thất vọng trên các đối tượng. Vì bạn đã sử dụng hình cầu, tôi đề nghị một cây hình cầu mặc dù các khối khác như AABB có thể hiệu quả hơn. Tôi không chắc Unity có hỗ trợ gì cho những thứ như tôi chưa từng sử dụng, nhưng có lẽ có thứ gì đó đã có trong bộ phận phát hiện va chạm hoặc kết xuất của động cơ.
Về cơ bản, bạn sẽ muốn nhóm các kẻ thù ở gần nhau thành nhiều quả cầu cha mẹ. Khi một đơn vị được di chuyển, bạn sẽ kiểm tra quả cầu kích hoạt của nó so với quả cầu mẹ thay vì kiểm tra từng kẻ thù. Nếu quả cầu kích hoạt giao với quả cầu cha, bạn sẽ kiểm tra từng kẻ thù bên trong. Nếu không, bạn có thể loại bỏ tất cả kẻ thù bên trong nó. Bạn sẽ muốn thiết lập nhiều cấp độ hình cầu dựa trên kích thước hình cầu tối đa hoặc số lượng kẻ thù cho mỗi hình cầu và thực hiện kiểm tra dựa trên hình cầu cấp cao nhất. Sau đó, chỉ là vấn đề đi xuống cây để kiểm tra từng kẻ thù mà không cần thực hiện kiểm tra khoảng cách cho từng người.
Các bước cần thiết cho từng khung:
- Di chuyển kẻ thù
- Xây dựng lại / cập nhật BVH cho các vị trí kẻ thù mới
- Di chuyển các đơn vị và kiểm tra chống lại cây hình cầu.
Điều này có thể làm giảm các kiểm tra cần thiết khi có nhiều kẻ thù nhưng chi phí cập nhật và lưu trữ cây có thể không có giá trị khi không có nhiều. Tôi không quen với Chỉ huy tối cao để biết bạn sẽ theo đuổi điều gì, vì vậy tôi chỉ giả sử 'hàng trăm'. Bạn sẽ cần phải lập hồ sơ trong các tình huống khác nhau để tìm hiểu xem chi phí chung có xứng đáng với bạn không.