Tránh quỹ đạo trong hành vi chỉ đạo theo đuổi


9

Tôi có một tên lửa thực hiện hành vi theo đuổi (và thử và tác động) mục tiêu (đứng yên) của nó.

Nó hoạt động tốt miễn là bạn không oanh tạc khi bạn phóng tên lửa. Nếu bạn đang oanh tạc, tên lửa có xu hướng quay quanh mục tiêu của nó.

nhập mô tả hình ảnh ở đây

Tôi đã khắc phục điều này bằng cách tăng tốc tiếp tuyến tới mục tiêu trước , giết chết thành phần tiếp tuyến của vận tốc trước, sau đó tiến hành tấn công mục tiêu.

nhập mô tả hình ảnh ở đây

Vì vậy, tôi tăng tốc trong -vT cho đến khi vT gần 0. Sau đó tăng tốc theo hướng vN.

Trong khi nó hoạt động, tôi đang tìm kiếm một giải pháp thanh lịch hơn, nơi tên lửa có thể tác động đến mục tiêu mà không cần giết chết thành phần tiếp tuyến trước.


Tôi không nghĩ bạn có thể nhận được câu trả lời thỏa mãn mà không giải thích thuật toán lái của bạn là gì. Tôi khá chắc chắn rằng vấn đề nằm ở heuristic của bạn ở đó.
sam hocevar

1
Trên thực tế, đây là câu trả lời tôi đã sử dụng
bobobobo

Câu trả lời:


5

Có vẻ như vấn đề là tên lửa chỉ đơn giản là hướng chính nó vào mục tiêu mà không quan tâm đến vận tốc hiện tại của nó. Chỉ định tên lửa của bạn một góc tối đa mà lực đẩy có thể đi chệch khỏi đường chuyển động.

Ở mỗi lần lặp hướng dẫn, bạn tính toán vận tốc của nó vuông góc với mục tiêu. Tìm hiểu xem nó phải trả bao nhiêu cho động cơ của nó để loại bỏ thành phần này của vận tốc của nó và sau đó cắt nó đến mức tối đa mà nó có thể nghiêng động cơ của nó.

Trong phần đầu của chuyến bay, nó sẽ di chuyển sang bên phải của đường thẳng trong hình # 2, nhưng khi nó bay, động cơ sẽ loại bỏ thành phần này và nó sẽ hướng thẳng đến mục tiêu.

Lưu ý rằng trong kịch bản này sẽ chỉ có một khung trong đó động cơ có độ lệch của bất kỳ thứ gì khác 0 hoặc tối đa. Nếu bạn đang theo dõi một mục tiêu di động, bạn có thể nhận được độ lệch ít hơn trên mỗi chu kỳ khi mục tiêu di chuyển.


4

Nó có thể không phải là giải pháp tao nhã mà bạn đang theo đuổi, nhưng tôi đã thấy rằng nếu tôi làm chậm tên lửa, nếu nó bị trượt, khi nó tiếp cận mục tiêu, nó sẽ theo dõi và quay nhanh hơn và có thể bắn trúng mục tiêu. Bạn có thể tăng tốc độ quay của tên lửa khi nó tiến gần hơn, thay vì giảm tốc độ, nhưng điều này có thể mang đến cho người chơi một 'wow tôi chắc chắn rằng sẽ bỏ lỡ bất ngờ khó chịu.

Điều này có thể trông không tuyệt vời lắm, nhưng nó chắc chắn ngăn chặn các tên lửa quay quanh và từ vòng tròn của kẻ thù đang bắn phá tên lửa cho đến khi hết nhiên liệu.

Đây là bản demo Tôi đã kết hợp thực hiện của mình (tên lửa thứ ba hoặc thứ ba thể hiện điều này và một lần nữa vào lúc 1:05): http://www.youtube.com/watch?v=9uiGMC_nH2w

Bạn cũng có thể tăng độ chính xác của tên lửa khi nó cũng tiếp cận mục tiêu (vì nó có chữ ký gần hơn để khóa). Điều này được hiển thị trong video quá một phút. Vòng tròn màu đỏ hiển thị mục tiêu thực sự của tên lửa. Điều này mang lại cho nó một đường bay hỗn loạn khi ở một khoảng cách xa, và sau đó duỗi thẳng ra càng gần hơn.

Như tôi nói, nó có thể không phải là câu trả lời bạn đang tìm kiếm, nhưng tôi hy vọng nó có ích nếu chỉ một chút.


Nó là khá mát mẻ. Tôi sẽ tăng tốc tối đa, nhưng làm chậm tên lửa là một mẹo gọn gàng (và có thể được sử dụng nếu bạn gọi chúng là "tên lửa lừa"?)
bobobobo

4

Trực giác

Đây là một cách: Hãy xoay sơ đồ của bạn.

một vòng quay của minh họa vấn đề ban đầu

Bây giờ tên lửa là một khẩu súng thần công !

Vật lý

Nó có gia tốc cố định "hướng xuống" tức là vuông góc với vectơ từ vị trí bắn tới mục tiêu. Tôi vẽ nó ở trên như một đường màu xanh nét đứt. Hãy gọi đó là chân trời tham chiếu . (Lưu ý rằng chân trời tham chiếu này là không đổi! Tên lửa được bắn từ một vị trí cố định với vị trí cố định làm mục tiêu.)

Chúng tôi biết (từ wikipedia ) cho một khẩu súng thần công không có sức cản không khí, đó là d = v^2 * sin(2 * theta) / gnơi

  • d là khoảng cách di chuyển ngang (khoảng cách giữa vị trí bắn và mục tiêu)
  • v là tốc độ đạn được bắn vào
  • thetalà góc tới đường chân trời của viên đạn được bắn ra ( góc của vectơ hướng lửa từ đường chân trời tham chiếu )

Sắp xếp lại các phương trình cho gcho g = v^2 * sin(2 * theta) / d.

Hằng số trong phương trình súng thần công ggia tốc do trọng lực . Chúng ta có thể coi nó là gia tốc do lực đẩy của tên lửa . Đó là tốt quá - nó vẫn là một gia tốc không đổi trong một hướng liên tục .

Giờ thì sao?

Chạy phương trình đó gkhi bạn bắn tên lửa. Nó sẽ cho bạn biết bao nhiêu để tăng tốc tên lửa vuông góc về phía chân trời tham chiếu, để bắn trúng mục tiêu. Vì hướng của gia tốc đó là không đổi, nên một quỹ đạo sẽ không hình thành.

Bùng nổ.


Đây là một cách tiếp cận gọn gàng. Tôi nghĩ rằng điều này sẽ khiến tên lửa theo dõi một vòng tròn , bạn đang cung cấp lực hướng tâm cần thiết để quay quanh một vòng tròn xảy ra để tác động vào mục tiêu. Tôi tin rằng đây có thể là cách tiếp cận được sử dụng cho đạn pháo đỏ trong Mario Kart , bởi vì tôi luôn nghĩ rằng họ có xu hướng vòng cung
bobobobo

Các lực được áp dụng ở đây không phải là hướng tâm. Hướng của lực vuông góc với đường chân trời tham chiếu, không thay đổi nếu mục tiêu đứng yên. Điều này có nghĩa là hành vi quỹ đạo không thể xảy ra.
Anko

Tôi đã chỉnh sửa câu trả lời để làm cho rõ ràng hơn.
Anko

@Anko: Tôi không chắc toán học của bạn ở đây hoạt động cho mục tiêu di động, vì dường như là tác nhân kích hoạt cho trường hợp OP.
Vịt Mooing

@Mooing Bạn đúng, điều này chỉ có tác dụng đối với việc di chuyển mục tiêu nếu chúng di chuyển có thể dự đoán được và bạn nhắm mục tiêu dự đoán. Câu hỏi không đề cập cụ thể đến mục tiêu là đứng yên, trong câu đầu tiên.
Anko
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.