В вашем коде есть проблема с вращением камеры по оси Y. Вращение происходит неправильно, потому что вы используете transform.Rotate для вращения камеры по оси Y, а также по оси X. Это может привести к неожиданным результатам, поскольку оба вращения происходят относительно центра камеры.
Вместо этого, вы можете использовать transform.RotateAround для вращения камеры вокруг центра камеры.
private void Update()
{
// ...
// Вращение камеры
transform.RotateAround(transform.position, Vector3.up, mouseX * mouseSensitivity * Time.deltaTime);
transform.RotateAround(transform.position, Vector3.right, -mouseY * mouseSensitivity * Time.deltaTime);
}
В этом коде transform.RotateAround используется для вращения камеры вокруг центра камеры (transform.position) по оси Y (Vector3.up) и X (Vector3.right). Это обеспечивает более корректное вращение камеры.