私はSeabase Alphaによる XNA 用のカメラ クラスを使用していますが、うまく機能します。まったく変更する必要はありませんでした。しかし、水平方向に機銃掃射し、同時にヨーイングすると、ロールが変化し、決してロールできないように「ロック」する方法がわかりません。(一人称シューティングゲームと同様に、機銃掃射、推力、およびピッチとヨーの調整のみが可能です。)
クラスを呼び出すための私のコードは次のとおりです。
if (gamepadState.ThumbSticks.Right.X != 0)
{
// Look Around
camera.Yaw(-gamepadState.ThumbSticks.Right.X);
}
if (gamepadState.ThumbSticks.Right.Y != 0)
{
// Look Around
camera.Pitch(-gamepadState.ThumbSticks.Right.Y);
}
if (gamepadState.ThumbSticks.Left.X != 0)
{
// Move Around
camera.StrafeHorz(-gamepadState.ThumbSticks.Left.X);
}
if (gamepadState.ThumbSticks.Left.Y != 0)
{
// Move Around
camera.Thrust(gamepadState.ThumbSticks.Left.Y);
}
if (gamepadState.Buttons.LeftShoulder == ButtonState.Pressed)
{
camera.StrafeVert(0.2f);
}
if (gamepadState.Buttons.RightShoulder == ButtonState.Pressed)
{
camera.StrafeVert(-0.2f);
}
カメラ クラスの Up ベクトルを と に強制しようとしましVector(0, 0, 1)
たVector(0, 1, 0)
。Z を 1 に設定すると少しは役に立ちましたが、それでも転がることはできました。