我正在制作第一人称射击游戏,我想限制相机旋转。我已经使用Math.clamp来夹住角度,但是在角度达到0之后它会夹到最大角度。它应该不会夹到-24f。我该如何解决这个问题。
public void CameraRotate(Vector3 camrotate){
cam.transform.Rotate (camrotate*Time.deltatime);
temporaryangle = cam.transform.eulerAngles;
temporaryangle= new Vector3 (Mathf.Clamp(cam.transform.eulerAngles.x,-24f,55f),cam.transform.eulerAngles.y,cam.transform.eulerAngles.z); // camrotate means a vector and cam is the camera
cam.transform.eulerAngles= temporaryangle;
}
答案 0 :(得分:1)
您可以通过在比较之前添加偏移量(比如180f)将比较移动到不涉及环绕在0/360的范围,并在之后删除它:
var tmpOffset = 180f;
var clampedX = cam.transform.eulerAngles.x + tmpOffset;
clampedX = Mathf.Clamp(clampedX, tmpOffset - 24f, tmpOffset + 55f);
clampedX -= tmpOffset; // return to the correct value
temporaryangle = new Vector3 (clampedX, cam.transform.eulerAngles.y, cam.transform.eulerAngles.z); // camrotate means a vector and cam is the camera