Если вы позвоните Rotate
с помощью Space.Self
, вы будете вращать объект вокруг его локальных осей. Для « нормальной fps камеры » это хорошо для вертикального вращения, вы хотите вращаться вокруг локальной оси x / right, но для горизонтального вращения вы хотите, чтобы объект вращался вокруг глобальной оси y / up. Более подробный пост см. вращение объекта по двум осям . Итак, ваш код должен быть:
void onCameraLook() {
mouseX = Input.GetAxis("Mouse X") * Time.deltaTime * sensitivity;
mouseY = Input.GetAxis("Mouse Y") * Time.deltaTime * sensitivity;
transform.Rotate(-mouseY, 0, 0, Space.Self);
transform.Rotate(0, mouseX, 0, Space.World);
}