我有一艘宇宙飞船,它有一个位置、目的地和一个旋转。当它有一个新的目的地时,它会一直向前移动,同时顺时针旋转,直到它面对它的目的地。
代码:
public void Move()
{
Vector requiredDirection = destination - origin;
requiredDirection.Normalize();
Vector directionNow = new Vector((float)Math.Cos(rotation), (float)Math.Sin(rotation));
float x = Math.Abs(requiredDirection.X - directionNow.X);
float y = Math.Abs(requiredDirection.Y - directionNow.Y);
if ((x > rotationSpeed) || (y > rotationSpeed))
{
rotation += rotationSpeed;
}
shipPosition += directionNow * speed;
}
我的问题是船只会向一个方向旋转,直到它面对它的目标,我需要它向最短路线的方向旋转。
我真的不知道从哪里开始,这是我第一次真正尝试 Vectors。