void CameraRotate()//鼠标控制摄像机V视角和角色H转动
{
YLimited += MouseY * Time.deltaTime * RotateSpeed;
FirstPersonCamera.transform.localRotation =
Quaternion.Euler(Mathf.Clamp(YLimited, 45, 135), 0.0f, 0.0f);//通过Mathf.Clamp实现
transform.Rotate(0, MouseX * Time.deltaTime * RotateSpeed, 0);
}
水平方向转动角色,垂直方向转动摄像机。
但是垂直方向不使用transform.Rotate转而是给transform.localRotation赋值。
而赋值的值可以使用Mathf.Clamp进行角度的限制:
Mathf.Clamp(YLimited, 45, 135)指YLimited若处于45度到135度之间是正常输出,超过135或低于45时输出最大值135或最小值45。
需要注意的是如果采用给transform.localRotation赋值的方法要注意使用局部坐标,不然摄像机无法随角色水平转动。