// Update is called once per frame
    void Update()
    {
        // More responsive movement
        moveInput    = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
        moveVelocity = moveInput * moveSpeed;

        //camera to mouse interaction
        Ray cameraRay = mainCamera.ScreenPointToRay(Input.mousePosition);
        //create another plane
        Plane groundPlane = new Plane(Vector3.up, Vector3.zero);
        float rayLength;

        //raycast (determine lenght of particular ray; if camera hits anything else in our world)
        if (groundPlane.Raycast(cameraRay, out rayLength))
        {
            Vector3 pointToLook = cameraRay.GetPoint(rayLength);
            Debug.DrawLine(cameraRay.origin, pointToLook, Color.blue);

            //make player look at what we (the mouse) is pointing at. Does this for crosshairs as well
            transform.LookAt(new Vector3(pointToLook.x, transform.position.y, pointToLook.z));
            crosshairs.transform.position = new Vector3(pointToLook.x, transform.position.y, pointToLook.z);
            crosshairs.Detect(cameraRay);
        }

        //left mouse button to fire
        if (Input.GetMouseButtonDown(0))
        {
            theGun.isFiring = true;
        }
        if (Input.GetMouseButtonUp(0))
        {
            theGun.isFiring = false;
        }
    }