我无法在指定范围内投放相机。目前,我的相机可以在没有任何限制的情况下绕过模型。我试图将Y轴限制在6到36之间,但如果我继续投球,Z轴将继续向前移动相机。
我正在使用控制器拇指操纵杆来控制移动。最终,我要做的是:“如果相机与目标(模型)的角度超过我的极限角度,请将相机保持在极限,无论是否有更多的音高(人持续握住拇指杆或应用。“
注意:这是第三人称相机
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;
}
}
答案 0 :(得分:0)
它与相机在太空中的X或Y位置没有任何关系。要解决此问题,您需要将相机的音高总量存储在您的ModelLoad
对象中,或者存储在其中的任何其他位置。然后在将矩阵变换应用到相机的位置矢量之前检查这个值,实际上,在执行任何这些操作之前检查它...是的,所以如果当前的音高量等于36只是退出方法而不做任何事情,如果不是,请旋转相机,不要忘记将新数量添加到总数中。
我不太记得,但我认为你传给Matrix.CreateFromAxisAngle
的角度必须是弧度,对吧?所以不要检查36,检查36转换为弧度。 (假装你不知道哈哈)