指定された範囲内でカメラをピッチングしようとして問題が発生しました。現在、私のカメラは制約なしにモデルの周りをピッチングできます。Y軸を6から36の範囲に制限しようとしましたが、ピッチングを続けると、Z軸はカメラを前方に動かし続けます。
コントローラーのサムスティックを使用して動きを制御しています。最終的に、私がやろうとしているのは、「ターゲット(モデル)に対するカメラの角度が私の限界の角度よりも大きい場合は、ピッチが大きくなるかどうかに関係なく、カメラを限界に保ちます(人がサムスティックを押し続けているか、ダウン)が適用されます。」
注:これは3人称カメラです
public void cameraPitch(float pitch)
{
cameraDirection = ModelLoad.CameraPos - ModelLoad.camTarget;
axisPitch = Vector3.Cross(Vector3.Up, cameraDirection);
// pitch constrained to model's orientation
axisPitch.Normalize();
ModelLoad.CameraPos = Vector3.Transform(cameraDirection,
Matrix.CreateFromAxisAngle(axisPitch, pitch)) + ModelLoad.camTarget;
if (ModelLoad.camPos.Y > 36.0f)
{
ModelLoad.camPos.Y = 36.0f;
}
if (ModelLoad.camPos.Y < 6.0f)
{
ModelLoad.camPos.Y = 6.0f;
}
}