[SOLVED] Camera going crazy on click and drag?

Hello all, my camera is going a bit crazy when i click and drag, here’s an example gif i made:

And here is my current camera code:

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

    public class ThirdPersonCamera : MonoBehaviour
    {
        private const float Y_ANGLE_MIN = 5.0f;
        private const float Y_ANGLE_MAX = 45.0f;
        private const float DISTANCE_MAX = 40.0f;
        private const float DISTANCE_MIN = 20.0f;
        private const float TRANS_MIN = 1.0f;
        private const float TRANS_MAX = 2.0f;

        public Transform lookAt;
        public Transform camTransform;
        public GameObject player;

        private Camera cam;

        public float distance = 20.0f;
        private float currentX = 0.0f;
        private float currentY = 0.0f;
        private float sensitivityX = 4.0f;
        private float sensitivityY = 1.0f;
        private float trandis;

        public Vector3 height = new Vector3(0, 0, 0);

        private bool below = false;

        private float speed = 3.5f;

        private void Start()
        {

            //Makes camTransform a transform
            camTransform = transform;
            //Sets variable cam value to the main camera
            cam = Camera.main;

        }

        private void Update()
        {

            if (Input.GetMouseButton(2))
            {
                transform.Rotate(new Vector3(Input.GetAxis("Mouse Y") * speed, -Input.GetAxis("Mouse X") * speed, 0));
                currentX = transform.rotation.eulerAngles.x;
                currentY = transform.rotation.eulerAngles.y;
                transform.rotation = Quaternion.Euler(currentX, currentY, 0);

                //Makes the camera move by looking at the axis of the mouse(Also multiplied by the seisitivity.)
                currentX -= Input.GetAxis("Mouse X") * sensitivityX;
                currentY -= Input.GetAxis("Mouse Y") * sensitivityY;

                //Limits the Y variable
                currentY = Mathf.Clamp(currentY, Y_ANGLE_MIN, Y_ANGLE_MAX);
                //Thiago Laranja's scrollwheel implemetation.
                if (Input.GetAxis("Mouse ScrollWheel") > 0) { distance -= 1.0f; }
                if (Input.GetAxis("Mouse ScrollWheel") < 0) { distance += 1.0f; }

                //Makes sure that these variables never go over the max and be les than the min. :)
                distance = Mathf.Clamp(distance, DISTANCE_MIN, DISTANCE_MAX);
                trandis = Mathf.Clamp(distance, TRANS_MIN, TRANS_MAX) - 1;

                //Sets players transparency(Make sure that player materials rendering mode has set to transparent or other mode that supports transparency)
                player.GetComponent<Renderer>().material.color = new Color(player.GetComponent<Renderer>().material.color.r, player.GetComponent<Renderer>().material.color.g, player.GetComponent<Renderer>().material.color.b, trandis);

                //Disables the object from rendering if your're at distance 0.8.
                if (distance <= 0.8f) { player.GetComponent<Renderer>().enabled = false; }
                if (distance > 0.8f) { player.GetComponent<Renderer>().enabled = true; }

                //If close enough to the character sinp into distance of 0.1(If distance is 0 the camera cant be rotated.)
                if (distance <= 0.8f && below == false) { distance = 0.1f; below = true; }
                if (distance >= 0.8f && below == true) { below = false; }

            }
        }
        private void LateUpdate()
        {

            //Subtracts hte distance from Z coordinate
            Vector3 dir = new Vector3(0, 0, -distance);

            //Creates an quaternion for rotation(too bad that we cannot use Vector3. :smile:   )
            Quaternion rotation = Quaternion.Euler(currentY, currentX, 0);

            //Sets the cameras position and makes it look at player.
            camTransform.position = lookAt.position + height + rotation * dir;
            camTransform.LookAt(lookAt.position + height);

        }

    }

Thanks for any help in advance

I really can’t figure out what you are trying to do here. First you rotate the camera (lines 49-52). Then you do some more math that never gets applied to the transform (lines 54-59). Then when you are done with that, you rotate the camera again in LateUpdate (line 92).

I would suggest starting with a clean slate. Start with a plain english description of what you want to happen. Then build up the code to get there one line at a time.

well fixed that long ago, now trying to get my camera to snap to 90 degrees, no luck yet