interact distance limits

I made 2 scripts that interact at a distance (the idea was you had to be really close to the box collider) but for some reason its triggered at like the other side of the room

the code on the object:

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

public class KeyScript : MonoBehaviour
{
    public GameObject wall;
    public GameObject key;
    public GameObject hiddenwall;
    public float smooth = 2f;


    void Update()
    {
        if (Input.GetKeyDown(KeyCode.E))
        {
            wall.SetActive(false);
            key.SetActive(false);
            hiddenwall.SetActive(true);
        }
    }
}

the code on the player:

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

public class interact : MonoBehaviour
{
    public float interactDistance = 2f;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.E))
        {
            Ray ray = new Ray(transform.position, transform.forward);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, interactDistance))
            {
                if (hit.collider.CompareTag("Key"))
                {
                    hit.collider.transform.GetComponent<KeyScript>();
                }
            }
        }
    }
}

Your Update() in KeyScript.cs doesn’t care about the Update() in interact.cs

Replace the Update() in KeyScript.cs with a function that will be called from interact.cs

 public class KeyScript : MonoBehaviour
 {
     public GameObject wall;
     public GameObject key;
     public GameObject hiddenwall;
     public float smooth = 2f;
 
     public void UseKey()
     {
      wall.SetActive(false);
      key.SetActive(false);
      hiddenwall.SetActive(true);
     }
 }

public class interact : MonoBehaviour
 {
     public float interactDistance = 2f;
 
     void Update()
     {
         if (Input.GetKeyDown(KeyCode.E))
         {
             Ray ray = new Ray(transform.position, transform.forward);
             RaycastHit hit;
             if (Physics.Raycast(ray, out hit, interactDistance))
             {
                 if (hit.collider.CompareTag("Key"))
                 {
                     hit.collider.transform.GetComponent<KeyScript>().UseKey();
                 }
             }
         }
     }
 }