Вам нужно только обеспечить эффект трансформации мира модели.
Matrix World = Matrix.CreateWorld(position, forward, up);
В вашем методе обновления вы можете изменить позицию:
LastPosition = Position;
if (IsKeyDonw(Left) Position -= Vector3.UnitX * Speed * ElapsedTime; ForwardDirty = true;
if (IsKeyDonw(Right) Position += Vector3.UnitX * Speed * ElapsedTime; ForwardDirty = true;
if (IsKeyDonw(Up) Position -= Vector3.UnitZ * Speed * ElapsedTime; ForwardDirty = true;
if (IsKeyDonw(Down) Position += Vector3.UnitZ * Speed * ElapsedTime; ForwardDirty = true;
// the forward is the direction where will point your model.
if (ForwardDirty) {
Forward = Position - LastPosition;
Forward.Normalize();
ForwardDirty = false;
}
Вы также можете основывать свое движение в векторном направлении вперед или сглаживать изменение угла, интерполируя окончательное движение вперед с текущим...