做上下左右旋转的话要把左右和上下旋转分开,可以包一层用父节点做左右旋转,子节点做上下旋转,计算出要旋转的角度,通过Rotate方法绕对应的轴旋转,比如下面这样的
if (angleTemp != Vector3.zero)
{
//左右围绕中心点旋转
cameraTrans.RotateAround(Center.position, Vector3.up, angleTemp.y);
//上下直接绕自身的X轴旋转,限制旋转角度为0 - 90度,坐标系一定要为自身
if (cameraTrans.localEulerAngles.x - (-angleTemp.x) <= 90 && cameraTrans.localEulerAngles.x - (-angleTemp.x) >= 0)
{
cameraTrans.Rotate(Vector3.left, -angleTemp.x, Space.Self);
}
angleTemp = Vector3.zero;
}
angleTemp就是要旋转的角度,左右围绕中心点旋转,上下上下直接绕自身的X轴旋转,返过来也同理