private void Update() { // Pressing E while standing in front of an interactable enables the artifact viewer for that object if (Input.GetKeyDown(KeyCode.E)) { // remove any active tutorials meltTutorial.SetActive(false); createTutorial.SetActive(false); Vector3 camPos = playerCamera.position; RaycastHit hit; if (!pmScript.enabled) { DisableArtifactViewer(true); } else if (Physics.Raycast(camPos, playerCamera.TransformDirection(Vector3.forward), out hit, interactReach, interactableMask)) { Interactable interactable = hit.collider.GetComponent <Interactable>(); Key key = hit.collider.GetComponent <Key>(); Keyhole keyhole = hit.collider.GetComponent <Keyhole>(); Antidote antidote = hit.collider.GetComponent <Antidote>(); if (interactable != null) { InteractWithArtifact(hit.collider.gameObject); hit.collider.gameObject.SetActive(false); } else if (key != null) { key.Collect(); } else if (keyhole != null) { keyhole.PlaceKeyOnKeyhole(); } else if (antidote != null) { antidotePickupSource.clip = antidotePickupSound; antidotePickupSource.Play(); antidote.Collect(); } else if (hit.collider.CompareTag("gun")) { gunObject.SetActive(true); toolScript.enabled = true; meltTutorial.SetActive(true); menuManager.playerHasTool = true; hit.collider.gameObject.SetActive(false); } else if (hit.collider.CompareTag("Tool Component")) { toolScript.canFreeze = true; hit.collider.gameObject.SetActive(false); createTutorial.SetActive(true); freezerAttachment.SetActive(false); fuelBar.SetActive(true); toolScript.toolFuel = startingFuelPercent * toolScript.capacity; } } } }