Ну есть функция Debug.log("Ошибка"); так что смотри что после raycast"a не сработало
примерно должно быть так
GameObject _screenbuttor; //элемент UI с подсказкой для открытия двери
LayerMask _doorMask;//маска двери
private void Update()
{
Transform cam = Camera.main.transform; // откуда пускаем луч будет просто камера
RaycastHit hitInfo; //информация о попадание луча
if (Physics.Raycast(cam.position,cam.forward,out hitInfo, 10f,_doorMask))
{
Debug.Log("hit work"); //проверка что все работает
_screenbuttor.SetActive(true); // подсказку активной
}
else
{
_screenbuttor.SetActive(false);
}
if (_screenbuttor.activeSelf && Input.GetKeyDown(KeyCode.E)) //если подсказка активна и нажата кнопка E
{
Debug.Log("Door Interactive"); // проверяем что все сработало
hitInfo.collider.GetComponent<Door>().InteractingDoor(); // вызываем метод для работы с дверью
}
На двери
using UnityEngine;
public class Door : MonoBehaviour
{
[SerializeField] bool _isOpen;
// public bool isOpen=> _isOpen;
public void InteractingDoor()
{
Debug.Log("Use Door Interact"); // проверяем что перешли в другой скрипт
if (_isOpen) CloseDoor();
else OpenDoor();
}
void CloseDoor()
{
Debug.Log("Close Door"); //проверяем что включился метод для закрытия двери
//Ну тут действия для закрытия
}
void OpenDoor()
{
Debug.Log("Open Door"); //проверяем что включился метод для открытия двери
//Тут действия для открытия
}
}
Ну и смотри в консоле что не сработало значит там и ошибка, если все работает значит что то не так с методом для открытия двери, проверить анимационный контроллер или как там отрывается