using UnityEngine;

namespace Quake3Movement
{
    public class MouseLook : MonoBehaviour
    {
        public float mouseSensitivity = 100f;
        public Transform playerBody;

        float xRotation = 0f;
        bool cursorLocked = true;

        void Start()
        {
            Init();
        }

        public void Init()
        {
            Cursor.lockState = CursorLockMode.Locked;
            cursorLocked = true;
        }

        public void UpdateCursorLock()
        {
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                cursorLocked = !cursorLocked;
                Cursor.lockState = cursorLocked ? CursorLockMode.Locked : CursorLockMode.None;
            }
        }

        public void LookRotation()
        {
            float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
            float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

            xRotation -= mouseY;
            xRotation = Mathf.Clamp(xRotation, -90f, 90f);

            transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
            playerBody.Rotate(Vector3.up * mouseX);
        }

        void Update()
        {
            UpdateCursorLock();
            LookRotation();
        }
    }
}
using UnityEngine;
using Quake3Movement;
namespace Quake3Movement




{
    /// <summary>
    /// This script is used to display real-time statistics to help with tweaking and debugging.
    /// </summary>
    [RequireComponent(typeof(Q3PlayerController))]
    public class Q3PlayerDebug : MonoBehaviour
    {
        [Tooltip("How many times per second to update stats")]
        [SerializeField] private float m_RefreshRate = 4;

        private int m_FrameCount = 0;
        private float m_Time = 0;
        private float m_FPS = 0;
        private float m_TopSpeed = 0;
        private Q3PlayerController m_Player;

        private void Start()
        {
            m_Player = GetComponent<Q3PlayerController>();
        }

        private void LateUpdate()
        {
            // Calculate frames-per-second.
            m_FrameCount++;
            m_Time += Time.deltaTime;
            if (m_Time > 1.0 / m_RefreshRate)
            {
                m_FPS = Mathf.Round(m_FrameCount / m_Time);
                m_FrameCount = 0;
                m_Time -= 1.0f / m_RefreshRate;
            }

            // Calculate top velocity.
            if (m_Player.Speed > m_TopSpeed)
            {
                m_TopSpeed = m_Player.Speed;
            }
        }

        private void OnGUI()
        {
            GUI.Box(new Rect(0, 0, 130, 60),
                "FPS: " + m_FPS + "\n" +
                "Speed: " + Mathf.Round(m_Player.Speed * 100) / 100 + " (ups)\n" +
                "Top: " + Mathf.Round(m_TopSpeed * 100) / 100 + " (ups)");
        }
    }
}
using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public float mouseSensitivity = 100f;
    public Transform playerBody;

    float xRotation = 0f;

    void Start()
    {
        // Lock the cursor to the center of the screen
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Update()
    {
        // Get mouse input
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

        // Apply vertical rotation (pitch)
        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        // Apply rotations
        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);       // Camera up/down
        playerBody.Rotate(Vector3.up * mouseX);                              // Player left/right
    }
}


Fix it:
Assets\Quake3Movement\Scripts\Q3PlayerDebug.cs(12,30): error CS0246: The type or namespace name 'Q3PlayerController' could not be found (are you missing a using directive or an assembly reference?)

Assets\Quake3Movement\Scripts\Q3PlayerDebug.cs(22,17): error CS0246: The type or namespace name 'Q3PlayerController' could not be found (are you missing a using directive or an assembly reference?)