void Rotate() { Quaternion targetRot = Quaternion.Euler(targetRotation.eulerAngles.x, targetRotation.eulerAngles.y, 0); targetRot *= Quaternion.Euler(-rotation.y * rotationSpeed, 0, 0); targetRot *= Quaternion.Euler(0, rotation.x * rotationSpeed, 0); targetRot *= Quaternion.Euler(0, 0, rotation.x * rotationSpeed * turnTilt); //targetRot = ClampRotationAroundXAxis(targetRot, 80); targetRot = ClampDistance(targetRot, character.rotation, new Vector3(-80, -160, -360), new Vector3(80, 160, 360)); targetRot = currentStance.OnRotate(targetRot); targetRotation = Quaternion.Euler(targetRot.eulerAngles.x, targetRot.eulerAngles.y, targetRot.eulerAngles.z); cam.rotation = Quaternion.Lerp(cam.rotation, targetRotation, Time.fixedDeltaTime * rotationSmoothness); }