private void Interact() { Ray ray = new Ray(transform.position, transform.forward); Debug.DrawRay(transform.position, transform.forward, Color.blue, interectableRange); if (Physics.Raycast(ray, out RaycastHit hit)) { if (hit.distance < interectableRange && hit.transform.CompareTag("Selectable")) { IInteractable interact = hit.transform.GetComponent <IInteractable>(); if (actualObjectInteract == null) { actualObjectInteract = interact; inventory.ReceiveItemFromController(interact); } else if (interact != actualObjectInteract) { actualObjectInteract.CancelAct(); actualObjectInteract = interact; inventory.ReceiveItemFromController(interact); } interact.Act(); } else { if (actualObjectInteract != null) { actualObjectInteract.CancelAct(); actualObjectInteract = null; } else { if (interactText != null) { interactText.SetActive(false); inventory.HideConfirmationScreen(); inventory.HideUseItemsScreen(); } } } } else { if (actualObjectInteract != null) { actualObjectInteract.CancelAct(); actualObjectInteract = null; } } }