Có vẻ như bạn đã trả lời câu hỏi của riêng bạn. A * có khả năng là cách tiếp cận tốt nhất. Có tất nhiên nó có thể được sử dụng theo cách bạn mô tả, bao gồm cả việc sử dụng thông tin chiều cao để tránh núi. Miễn là bạn có thể truy cập thông tin về bất kỳ lưới nào trên bề mặt thế giới của bạn, không có lý do gì bạn không thể sử dụng nó trong A * heuristic.
Cuối cùng, bạn đang nhầm lẫn tìm đường dẫn với đường dẫn ở cuối câu hỏi của bạn. Phát hiện đường dẫn không quan tâm đến trọng lực, trừ khi bạn thêm nó dưới dạng heuristic và vì bạn đang ở trên bề mặt của một hành tinh, trọng lực về cơ bản sẽ giống nhau trên toàn bộ bề mặt. Nhiều trò chơi có lực hấp dẫn cùng với chuyển động, tôi thấy không có lý do gì bạn không thể.
Về cơ bản, chúng tôi muốn ánh xạ chuyển từ màu đỏ sang màu xanh, giống nhau trên một hình cầu giống như trên một khối lập phương.
Vì A * thường xuyên nhận được hàng xóm vào nút hiện tại của nó, bạn có thể dễ dàng tạo một tập hợp các hàm để nhận các nút liền kề. Ví dụ, getXPlus()
, getXMinus()
, getZPlus()
và vân vân. Các hàm này sẽ lấy nút hiện tại và trả về nút theo hướng được chỉ định bởi tên hàm.
Hầu hết thời gian các chức năng này chỉ có thể tăng một giá trị và được thực hiện, tuy nhiên, trên các cạnh, điều đó sẽ thay đổi.
Bạn sẽ muốn ánh xạ bề mặt của khối lập phương của mình sang hệ tọa độ 2D. Tuy nhiên, bạn làm điều này tùy thuộc vào bạn, họ không phải xếp hàng, chỉ cần cung cấp cho mỗi không gian lưới một tọa độ X, Y duy nhất.
Bây giờ khi ở trên một cạnh và có được không gian lưới liền kề, không nhất thiết chỉ là tăng tọa độ. Chúng ta phải tìm ra khuôn mặt nào chúng ta đang di chuyển và chuyển sang tọa độ của khuôn mặt đó.
Ví dụ: lấy tọa độ XPlus ở đây sẽ thay đổi cả tọa độ X và Y vì chúng ta đang chuyển sang một không gian lưới mới trên một mặt mới. Đường màu xanh biểu thị một cạnh giữa hai mặt.
Bây giờ đây chỉ là tọa độ toàn cầu, có thể dễ dàng hơn khi sử dụng hệ thống tọa độ cục bộ bên trong, với chiều thứ 3 đại diện cho mặt khối mà bạn hiện đang sử dụng.
Dù bằng cách nào, bạn cần có một tọa độ duy nhất cho mỗi không gian lưới trên mặt của khối lập phương. Chuyển đổi giữa chúng sẽ phụ thuộc vào cách bạn triển khai hệ tọa độ. Bạn cần biết nơi phối hợp các bản đồ với bề mặt của hình cầu.
Tất cả điều này cuối cùng nên được trừu tượng hóa để bạn thậm chí không biết về nó.