Tôi đang cố gắng thực hiện hình thức điều hướng tỷ lệ đơn giản nhất có thể , tức là, tên lửa quay theo hướng mà mục tiêu mang theo của nó đang thay đổi, và một khi mục tiêu mang của nó không thay đổi, nó sẽ đi theo hướng đánh chặn.
Vì vậy, tôi có một tên lửa 2d di chuyển với tốc độ không đổi theo hướng nó đang đối mặt, nó có thể quay với tốc độ không đổi, và mỗi khoảng thời gian tôi cập nhật tên lửa với một cái gì đó như:
Position += VectorProduct (Direction * Speed * TimePassed)
PreviousTargetBearing = TargetBearing
TargetBearing = AngleBetween(TargetPosition, Position)
TargetBearingDelta = TargetBearing - PreviousTargetBearing
If TargetBearingDelta > 0: MissileDirection += TurnRate * TimePassed
If TargetBearingDelta < 0: MissileDirection -= TurnRate * TimePassed
Vấn đề là, tên lửa luôn dao động xung quanh hướng phóng của nó, bởi vì ngay khi tên lửa quay lần đầu tiên, điều này sẽ đảo ngược dấu hiệu của TargetBearDelta, khiến nó quay theo hướng ngược lại, v.v ...
Cách đơn giản nhất tôi có thể giải quyết vấn đề này là gì? Tôi chắc chắn tôi đang thiếu một cái gì đó đơn giản.
Câu hỏi liên quan đến StackOverflow: Làm thế nào để tạo một tên lửa đánh chặn tên lửa cho một trò chơi?
Để nhắc lại, tôi đặc biệt quan tâm đến việc thực hiện thuật toán điều hướng tỷ lệ , không phải là thuật toán homing nói chung.
Cập nhật: Tôi đoán câu trả lời rõ ràng là không kiểm tra ổ trục và điều chỉnh tiêu đề mỗi lượt, mà là xen kẽ giữa hai. Tôi sẽ thử điều đó.