2012-12-30 30 views
5

Tôi đang phát triển một trò chơi mô phỏng và Tôi rất mới để trò chơi kỹ thuật phát triển để đạt được things.I có tình huống sau đây:phong trào AI đại lý - chọn góc phong trào

enter image description here

Xin lưu ý rằng màu đỏ mũi tên là các hướng mà các tác nhân AI đang di chuyển trong

Bây giờ tôi đang cố gắng tìm ra cách tốt nhất để cho phép chuyển động ngẫu nhiên AI nơi va chạm sẽ không xảy ra (tôi đã có phương pháp kiểm tra xem động thái tiếp theo có va chạm hay không với các đại lý trong khu vực dựa trên bán kính kích thước đại lý, tuy nhiên tôi không biết phải làm gì nếu va chạm sẽ xảy ra tức là tôi nên thay đổi góc chuyển động như thế nào.) Vấn đề thực sự là chọn góc chuyển động để tránh va chạm với các tác nhân khác và có chuyển động ngẫu nhiên.

Ví dụ: Như đã thấy trong hình có một đại lý trong màu đen bao quanh bởi các đại lý vàng, làm thế nào có thể tác nhân chọn góc tiếp theo đó sẽ di chuyển nó ra khỏi con đường của các đại lý vàng và tránh va chạm.

Vì vậy, tôi đang tìm kiếm các đề xuất về cách tôi có thể triển khai điều này. Trợ giúp được đánh giá cao và cảm ơn trước!

Lưu ý tác nhân sử dụng véc tơ vận tốc để cập nhật vị trí được tính từ góc di chuyển và tốc độ không đổi.

Trả lời

2

Tôi có thể cung cấp cho bạn ý tưởng, cách tôi tiếp cận nó.

Vì vậy, trước tiên bạn có thể nghĩ đến việc chọn hướng của tác nhân khi chọn một góc được biểu thị bằng radian. Vì vậy, giá trị sẽ là từ 0 (bao gồm) và 2 * Pi (loại trừ) - tức là - toàn bộ vòng tròn. Bây giờ bạn có thể tính toán các hướng mà các tác nhân khác (giả sử rằng chúng ta chỉ quan tâm đến các tác nhân, không xa hơn so với x - nên dễ tính toán dựa trên các tọa độ). Khi chúng tôi có danh sách các đại lý được đề cập, chúng tôi có thể tính toán từng góc độ của chúng trong mối quan hệ với tác nhân gốc. Sau đó chúng ta có thể "bôi đen" vùng đó của vòng tròn sẵn có - đại lý càng gần thì số tiền càng lớn. Nếu bạn lặp lại điều đó cho tất cả các đại lý. vòng tròn của bạn bây giờ trông giống như thế:

---- XXXX --- XXXX ---- XXX -----

nơi XXX tương ứng với vùng bị bôi đen (những người mà sẽ có khả năng dẫn đến va chạm), trong khi những người còn lại sẽ tương ứng với các khu vực an toàn. Bây giờ bạn chỉ có thể chọn ngẫu nhiên khu vực an toàn, nhận góc tương ứng theo radian và di chuyển tác nhân của bạn. Đó thực sự là một vấn đề thú vị, nếu bạn xem xét hướng hiện tại của một tác nhân, bạn có thể làm cho họ chọn hướng an toàn gần nhất dẫn đến các thao tác né tránh suôn sẻ. :)

+0

Đó là một ý tưởng rất gọn gàng! Cảm ơn bạn, bạn sẽ có một thời gian để thực hiện nó tommorow. – Tohmas

+0

Chúc may mắn, nếu bạn gặp khó khăn về góc độ, hãy thử xử lý từng vòng tròn riêng biệt, nghĩa là, 1) dx> 0, dy> 0, 2) dx> 0, dy <0, v.v. –

+0

Vấn đề duy nhất bây giờ là cố gắng tìm ra cách lưu trữ tất cả các góc mà tác nhân có thể di chuyển. – Tohmas

Các vấn đề liên quan