場所、目的地、ローテーションのある宇宙船があります。新しい目的地がある場合は、目的地に面するまで時計回りに回転しながら前方に移動します。
コード:
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での初めての本当の試みです。