Vì vậy, đây là vấn đề của tôi:
Tôi có một tháp pháo gắn vào một con tàu di chuyển với tốc độ thay đổi trong thế giới trò chơi của tôi, bắn vào trung tâm của một con tàu khác đi qua thế giới trò chơi trong một vectơ có thể khác. Hiện tại, tôi có được góc mà tôi cần chụp khi sử dụng atan2:
double targetAngle = Math.Atan2(ship.CurrentTarget.Position.Y - ship.Position.Y, ship.CurrentTarget.Position.X - ship.Position.X);
Điều này hoạt động tốt khi cả hai tàu đều đứng yên, hoặc di chuyển rất chậm, nhưng nếu di chuyển nhanh hơn, mục tiêu bị tụt lại phía sau. Một phần thú vị khác của câu đố: vectơ của viên đạn không tĩnh, chúng bắt đầu từ 0 và tăng tốc độ. Vị trí của họ được tính như sau:
var direction = new Vector2((float)Math.Cos(currentRotation),
(float)Math.Sin(currentRotation));
if (direction.Length() > 0)
direction.Normalize();
var velocity = new Vector2(direction.X * MotionData.CurrentSpeed,
direction.Y * MotionData.CurrentSpeed) + additiveVector;
Trong đó additiveVector là véc tơ của tàu của tôi tại thời điểm phóng đạn. CurrentSpeed sẽ được thêm vào mọi khung hình cho đến khi nó đạt tốc độ tối đa tĩnh.
Cho đến nay, vấn đề tôi gặp phải với các giải pháp khác để bù vào mục tiêu của tôi là các công thức dựa trên vận tốc tĩnh cho đạn, còn tôi thì không.