我有一個圍繞另一個精靈(行星)的精靈(艦隊)軌道運行的方法。問題在於,隨着時間的推移,船隊會進一步移動(非常緩慢,除非讓軌道運行幾分鐘,否則幾乎不會發現)。隨着時間的推移而增加的2D軌道
public void Orbit()
{
// Planet's position - fleet position
Vector2 distanceToDestination = currentLocation.Position - position;
// Calculate fleet's rotation (- right angle so fleet rotates clockwise)
rotation = MathHelper.WrapAngle((float)Math.Atan2(distanceToDestination.Y, distanceToDestination.X)) - Helpers.RightAngle;
// Get the direction that the fleet is facing
direction = new Vector2((float)Math.Cos(rotation), (float)Math.Sin(rotation));
// Fleet position, thrust is set to 0.4f
position = Vector2.Add(position, direction * thrust);
// Fleet rectangle
rect = new Rectangle((int)position.X, (int)position.Y, fleetTexture.Width, fleetTexture.Height);
}
public static class Helpers
{
public const float RightAngle = (float)Math.PI/2;
}
我將不勝感激,如果社會能指出爲什麼我的車隊是不是保持一致的軌道,這是我想達到的目標!提前謝謝了。
感謝您既爲你出色的答案。 @dbc - 我選擇了你的答案,因爲我使用了你發佈的方法的變體。再次感謝。 – user3256944