Di chuyển xung quanh / tránh chướng ngại vật


12

Tôi muốn viết một "trò chơi", trong đó bạn có thể đặt một chướng ngại vật (màu đỏ), và sau đó, chấm đen cố gắng tránh nó và đến mục tiêu xanh.
Tôi đang sử dụng một cách rất dễ dàng để tránh nó, nếu chấm đen gần với màu đỏ, nó sẽ thay đổi hướng và di chuyển một lúc, sau đó nó di chuyển về phía trước tới điểm màu xanh lá cây.
Con đường "phi thực tế"

Làm cách nào tôi có thể tạo đường dẫn "trơn tru" cho "trình phát" được điều khiển bằng máy tính?
Chỉnh sửa: Không phải độ mịn là điểm chính, nhưng để tránh "bức tường" chặn màu đỏ và không đâm vào nó và sau đó tránh nó.

Làm thế nào tôi có thể thực hiện một số thuật toán tìm đường nếu tôi chỉ có 3 điểm cơ bản?
(Và điều gì sẽ khiến mọi thứ phức tạp hơn nhiều, nếu bạn có thể đặt nhiều chướng ngại vật?)
Con đường suôn sẻ

Câu trả lời:


9

Một cách tiếp cận rất phổ biến và chung là chia không gian thế giới của bạn thành các lưới và sử dụng các thuật toán như A *.

Liên kết này đã giúp tôi bắt đầu với việc hiểu và thực hiện thuật toán A *.

Chỉnh sửa :

Một ý nghĩ đơn giản hơn xuất hiện trong đầu tôi là ... một khi bạn có cả thế giới vào các ô lưới. Luôn luôn, có các chấm đen theo khoảng cách manhattan đến chấm xanh. Sau đó, bạn có thể gán trọng lượng cho từng ô. Chướng ngại vật có thể có trọng lượng lớn trên ô lưới và di chuyển tự do có thể có (giả sử) 0 trọng lượng. Khi bạn di chuyển dọc theo khoảng cách manhattan, cho mỗi lần di chuyển, hãy kiểm tra xem trọng lượng của ô tiếp theo không cao hơn trọng lượng của ô hiện tại. Nếu nó cao hơn, hãy kiểm tra trọng lượng của ô liền kề và sau đó tiếp tục.

Hi vọng điêu nay co ich


Bài viết về thuật toán A * này dường như là những gì tôi đang tìm kiếm, nhưng thật không may, điều tôi vẫn chưa biết là làm thế nào để chia "thế giới" của tôi thành các lưới: S
người dùng

Nó thực sự phụ thuộc. Suy nghĩ: chia thế giới của bạn thành một lưới 32 x 32, sau đó sẽ đại diện cho các vị trí trong một mảng 2D. Ví dụ: trong trường hợp của bạn: chấm đỏ ở mức 120, 120 pixel (hoặc 120/32 x 120/32: 3,75 x 3,75) 3,75 x 3,75 thể hiện một vị trí trên lưới thế giới của bạn (hoặc mảng 2D). Vì các mảng được lập chỉ mục bởi các số nguyên, bạn chỉ muốn một phần nguyên của nó. Do đó, chấm đỏ sẽ ở mức 3 x 3. Hy vọng điều này sẽ giúp
brainydexter 23/211

18

Hành vi chỉ đạo được thiết kế cho khá nhiều vấn đề chính xác này.

http://www.red3d.com/cwr/steer/

Về cơ bản, bạn sẽ kết hợp hành vi tránh chướng ngại vật với hành vi có thể tìm kiếm hoặc theo đuổi. Trang đó có một loạt các hình ảnh động java về các hành vi khác nhau và những gì họ làm. Có một số triển khai mã nguồn mở của các hành vi chỉ đạo. Đây là một.


Hành vi chỉ đạo là hoàn hảo cho việc này.
tenpn

2

Một điều dễ dàng để thử là có một chấm vô hình đi trước chấm đen và thực hiện đường dẫn trong hình ảnh đầu tiên của bạn. Dấu chấm đen sau đó theo dấu chấm vô hình ở một khoảng cách nhỏ phía sau.
Tôi đã thấy công việc này có kết quả tốt nhưng tất nhiên có thể không đáp ứng nhu cầu của bạn.

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.