RotateCameraDemo

ヘルプのカメラ移動のデモを試してみた。

そのままでは動かないのはお約束なのだろうか、UpdateCamera()というメソッドはないので、UpdateCameraFirstPerson()に書き換えたら動いた。
プレーヤーのワールド座標と、軸とのずれを変数に持っておいて、平行移動のときは移動するX成分とZ成分を計算しているのかな。


if (keyboardState.IsKeyDown(Keys.Up)) {
Matrix forwardMovement = Matrix.CreateRotationY(avatarYaw);
Vector3 v = new Vector3(0, 0, forwardSpeed);
v = Vector3.Transform(v, forwardMovement);
avatarPosition.Z += v.Z;
avatarPosition.X += v.X;
}
こんな感じ。よく分からん。
ちょっと回転の中心が後ろすぎると思う。カメラビューをいじればFPSっぽくなるのかなあ。