Problem rotating camera on negative z axis

I am trying to rotate the camera between -30 & 30 by pressing the arrow keys. it works fine in the positive direction but as soon as i change direction and it gets to zero in flicks back to 30.

If i change the values to 0, 30 it doesn’t flick back to 30 when it hits zero it works fine. The trouble is trying to get to the negative side.

Can anyone see where I am going wrong here please?

void Update()
{

        Vector3 rotation = transform.eulerAngles;

        rotation.z += Input.GetAxis("Horizontal") * rotationSpeed * Time.deltaTime;

        transform.eulerAngles = new Vector3(rotation.x, rotation.y,
        Mathf.Clamp(rotation.z, -30, 30));

    }

Don’t use transform.eulerAngles to set a Value, just use it to Read. Use transform.rotation = Quaternion.Euler => it’s the safest way to get the desired result.

your code fails due to that you set transform.eulerAngles.z to a float out of 0 - 360. transform.eulerAngles set method only works in the range between 0 and 360.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraRotationExample : MonoBehaviour
{
    public float rotationSpeed = 30;
    float z;
    void Update()
    {
        z += Input.GetAxis("Horizontal") * rotationSpeed * Time.deltaTime;
        z = Mathf.Clamp(z,-30,30);
        transform.rotation = Quaternion.Euler(transform.eulerAngles.x,transform.eulerAngles.y,z);
    }
}