オブジェクト/エンティティ/船に位置 (Vector3) と回転 (Matrix) を指定すると、次のコード (およびこの回答の下部にあるサンプル) を使用して船を動かすことができます。
たとえば、船を 5 単位前進させるには:
Entity myShip = new Entity();
myShip.GoForward(5.0f);
船のバレルを 90 度回転させるには
myShip.Roll(MathHelper.PiOver2);
そして、ここにサンプルコードがあります
public class Entity
{
Vector3 position = Vector3.Zero;
Matrix rotation = Matrix.Identity;
public void Yaw(float amount)
{
rotation *= Matrix.CreateFromAxisAngle(rotation.Up, amount);
}
public void YawAroundWorldUp(float amount)
{
rotation *= Matrix.CreateRotationY(amount);
}
public void Pitch(float amount)
{
rotation *= Matrix.CreateFromAxisAngle(rotation.Right, amount);
}
public void Roll(float amount)
{
rotation *= Matrix.CreateFromAxisAngle(rotation.Forward, amount);
}
public void Strafe(float amount)
{
position += rotation.Right * amount;
}
public void GoForward(float amount)
{
position += rotation.Forward * amount;
}
public void Jump(float amount)
{
position += rotation.Up * amount;
}
public void Rise(float amount)
{
position += Vector3.Up * amount;
}
}