public virtual void CameraInput()
        {
            if (!UnityEngine.Camera.main)
            {
                Debug.Log("Missing a Camera with the tag MainCamera, please add one.");
            }
            if (!ignoreCameraRotation)
            {
                if (!keepDirection)
                {
                    cc.UpdateTargetDirection(UnityEngine.Camera.main.transform);
                }
                RotateWithCamera(UnityEngine.Camera.main.transform);
            }

            if (tpCamera == null)
            {
                return;
            }

            var Y    = lockCameraInput ? 0f : rotateCameraYInput.GetAxis();
            var X    = lockCameraInput ? 0f : rotateCameraXInput.GetAxis();
            var zoom = cameraZoomInput.GetAxis();

            tpCamera.RotateCamera(X, Y);
            tpCamera.Zoom(zoom);

            // change keedDirection from input diference
            if (keepDirection && Vector2.Distance(cc.input, oldInput) > 0.2f)
            {
                keepDirection = false;
            }
        }