public void LookAt() { Vector3 rayOrigin = mainCam.ViewportToWorldPoint(new Vector3(.5f, .5f, 0)); RaycastHit hit; if (Physics.Raycast(rayOrigin, mainCam.transform.forward, out hit, interactRange)) { rayDirectionPoint = hit.point; gameObjectHit = hit.transform.gameObject; Interactable interactable = gameObjectHit.GetComponent <Interactable>(); if (interactable != null) { if (interactable.GetInteractable()) { if (!gameController.GetNPCTalking() && !gameController.GetObjectiveDialogue().activeInHierarchy) { itemInfoUI.SetActive(true); } if (gameController.GetObjectiveDialogue().activeInHierarchy) { itemInfoUI.SetActive(false); } interactable.Hover(); if (Input.GetMouseButtonDown(0) && !dialogueController.DialogueStarted() && !gameController.GetObjectiveDialogue().activeInHierarchy&& !narrativeDialogue.GetOutroNarrativeStart()) { Item newItem = interactable.GetInteractedItem(); switch (newItem.GetItemType()) { case ItemType.Stock: inventory.AddItem(newItem); break; case ItemType.Door: newItem.GetComponent <Door>().TryToOpen(); itemInfoUI.SetActive(false); break; case ItemType.NPC: newItem.GetComponent <NPCDialogue>().Talk(); itemInfoUI.SetActive(false); break; case ItemType.Freezer: newItem.GetComponent <Freezer>().Interact(); break; } } } } else { itemInfoUI.SetActive(false); } } else { rayDirectionPoint = rayOrigin + (mainCam.transform.forward * interactRange); gameObjectHit = emptyGO; itemInfoUI.SetActive(false); } if (debugMode == true) { Debug.Log("HIT: " + gameObjectHit); } }