Làm cách nào để các Đại lý AI di chuyển dọc theo một đường cong?


12

Hiện tại khung AI rất cơ bản của tôi có các tác nhân di chuyển dọc theo một con đường lởm chởm được tạo thành từ một loạt các điểm.

con đường hải quân

Họ làm điều này bằng cách đơn giản là di chuyển vị trí của họ từ điểm này sang điểm tiếp theo. Khi họ đạt đến điểm tiếp theo, họ tiến tới điểm tiếp theo và cứ thế. Làm cách nào tôi có thể thay đổi điều này để chúng di chuyển trơn tru dọc theo phiên bản cong của đường dẫn và làm cách nào để tạo đường cong?


Làm thế nào để họ chọn điểm tiếp theo?
FxIII

@FxIII xin lỗi tôi đã không thấy nhận xét này trước đây - ý bạn là làm thế nào để họ chọn mục tiêu tìm kiếm mới hoặc làm thế nào để họ chọn điểm tiếp theo trong tìm kiếm?
SirYakalot

Câu trả lời:


4

Bạn đang theo một số cách làm mịn đường dẫn. Tất nhiên, như bummzack đã chỉ ra, bạn cũng muốn đảm bảo rằng bất kỳ đường dẫn trơn tru nào mà bạn thực hiện đều dẫn đến các chuyển động hợp pháp cho các đại lý của bạn.

Bài viết này của Gamasutra giải thích khá nhiều tất cả mọi thứ bạn cần biết, bao gồm cả làm mịn đường dẫn, rẽ pháp lý và thuật toán rẽ thực tế, trơn tru.

Một cách khác, đơn giản hơn một chút, là sử dụng hành vi Tìm kiếm với một vòng tròn / hình cầu giới hạn nhỏ để kiểm tra xem tác nhân đang ở hoặc gần điểm tiếp theo trong đường dẫn.


7

Vì bạn đã biết các điểm kiểm soát của mình, bạn chỉ cần cập nhật mã nội suy của mình để sử dụng thuật toán cho độ cong (ví dụ Hermite hoặc Cosine).

Các trang web này cung cấp một lời giải thích tuyệt vời và mã mẫu sẽ giúp bạn bắt đầu:

Phương pháp nội suy Paul Bourke

Sol :: Hướng dẫn - Thủ thuật nội suy


Chà, nếu đường cong được tạo ra đột nhiên gặp chướng ngại vật thì sao?
bummzack

Điều này chỉ dành cho sự chuyển động của các tác nhân, trên mỗi khung. Algo phát hiện va chạm tương tự vẫn sẽ được áp dụng. Khi phát hiện va chạm, thay đổi các điểm kiểm soát để tránh đối tượng (khó) hoặc tạm thời bắt đầu sử dụng thuật toán chuyển động khác.
Doug.McFarlane

@bummzack đó là một điểm tốt, và câu trả lời là sử dụng lưới điều hướng và làm phẳng các đường cong của bạn cho phù hợp, tuy nhiên bây giờ tôi sẽ làm việc này với một biểu đồ điều hướng đơn giản và vì vậy tôi sẽ chỉ giải quyết vấn đề này bằng cách làm mịn các đường dẫn một chút.
SirYakalot

@bummzack: thêm một số hành vi lái để tránh chướng ngại vật trên đầu thuật toán tạo đường cong.
imre

0

Tôi sẽ đi ngược lại hạt gạo ở đây và đề nghị rằng, thay vì tạo trước các đường cong của bạn, chỉ cần xử lý nó trên cơ sở từng khung hình, sử dụng (ví dụ) cùng logic mà bạn sử dụng để tạo ra một đường viền -missile .

Điều này sẽ dễ dàng hơn nhiều và có lẽ thực tế hơn vì bạn không cần các trường hợp đặc biệt khi có các bức tường giữa hai điểm - bạn chỉ cần xử lý phát hiện va chạm như bình thường.

Nhược điểm là phong trào sẽ trông tối ưu. Đối tượng sẽ luôn đi theo con đường trực tiếp nhất từ ​​điểm này sang điểm tiếp theo, nghĩa là, không giống như một spline, anh ta sẽ không bắt đầu chuyển sang điểm 3 cho đến khi anh ta đã vượt qua điểm 2. Tùy thuộc vào tình huống của bạn, điều này có thể hoặc không có thể sửa chữa bằng cách điều chỉnh điểm tham chiếu của bạn (nếu đó thậm chí là một vấn đề).


1
Đây thực chất sẽ là một hành vi Tìm kiếm mà tôi đề xuất.
Ray Dey

0

Công cụ tìm đường dẫn sẽ cung cấp cho bạn đường dẫn và bạn không nên sửa đổi điều đó. Tôi tin rằng có thể sửa đổi thuật toán tìm đường dẫn của bạn để tính đến rằng đường dẫn có các đường rẽ sắc nét được tăng lên so với các đường cong có đường cong mượt mà như đã làm với đường dài so với đường ngắn.

Tôi sẽ đăng ở đây một số giải pháp nếu tôi có thể tìm thấy một khoảnh khắc để suy nghĩ sâu sắc về nó, nhưng tôi nghĩ rằng đây là cách để đi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.