Tôi sẽ làm điều này với một số loại giải pháp cây hành vi - bạn dẫn đến mục tiêu và lưu ý tất cả các chướng ngại vật đã chặn A * của bạn. Nếu bạn thất bại, bạn kiểm tra xem có những đối tượng có thể giúp vượt qua những trở ngại đó hay không, trong trường hợp đó, đường dẫn đến đối tượng đó. Nói lại. Điều này có nghĩa là tác nhân cần cố gắng đi đến mục tiêu và thất bại trước khi có ý tưởng sử dụng các công cụ, điều này có thể mất thời gian, đặc biệt là nếu có một thế giới lớn của gạch mà tất cả cần phải được kiểm tra. Có thể không nhìn quá lạc hậu mà các đại lý phải mất một thời gian để suy nghĩ về cách giải quyết vấn đề mặc dù.
Tôi có thể tưởng tượng một giải pháp thực sự, khó khăn. Thêm một chiều khác cho bạn đường tìm lưới. Vì vậy, trong trường hợp bản đồ 2D, bạn tạo lưới 3D tìm đường. Trong ví dụ đơn giản này, chiều mới này sẽ chỉ có độ sâu là hai, nhưng trong một trò chơi thực sự, nó sẽ trở nên lớn nhanh chóng.
Tại z = 0, bạn lập bản đồ địa hình trong các trường hợp thông thường, có nghĩa là gạch nước được coi là không thể vượt qua.
Với z = 1, bạn lập bản đồ địa hình trong khi có cào, có nghĩa là gạch nước được coi là có thể đi bộ (nhưng nếu bạn có ví dụ như gạch ốp tường, thì gạch đó có thể vẫn vững chắc).
Tìm kiếm đường dẫn là một A * bình thường trong các kích thước x và y, có nghĩa là mọi ô lưới được coi là có quyền truy cập vào các lân cận của nó. Tuy nhiên, ở kích thước z, A * KHÔNG được phép trải rộng.
Ngoại trừ nơi cào là. Đối tượng cào đóng vai trò mở giữa z = 0 và z = 1 trong lưới tìm đường.
Điều này có nghĩa là A * sẽ tràn vào bên ngoài trong z = 0, chạm vào nước và hết các tùy chọn - sau đó nó sẽ lan sang z = 1 qua gạch cào và tại z = 1 (nơi có thể đi được nước) tìm đường đến mục tiêu Hiệu quả là sự do dự của NPC do dự di chuyển đến cào, và sau đó di chuyển con đường ngắn nhất đến mục tiêu.