void Update() { displayName.text = ""; cursorImage.sprite = cursorDefault; actualObject = null; if (tempObject != actualObject && tempObject != null) { TurnOffEmission(); } if (Physics.Raycast(CameraTransform.position, CameraTransform.forward, out rayHit, detectionDistance)) { // Debug.Log(rayHit.collider.gameObject.name.ToString()); intObj = rayHit.transform.GetComponent <InteractableObject>(); if (intObj != null) { actualObject = intObj; } } if (actualObject == null) { Hits = Physics.OverlapSphere(CameraTransform.position, detectionDistance); //detectionDistance objDistance = float.MaxValue; foreach (Collider hit in Hits) { intObj = hit.transform.GetComponent <InteractableObject>(); if (intObj != null) { if (Vector3.Dot(CameraTransform.TransformDirection(Vector3.Normalize(Vector3.forward)), Vector3.Normalize(intObj.transform.position - CameraTransform.position)) > detectionAngle) { if (Physics.Linecast(CameraTransform.position, intObj.transform.position, 2)) { if ((intObj.transform.position - CameraTransform.position).magnitude < objDistance) { objDistance = (intObj.transform.position - CameraTransform.position).magnitude; actualObject = intObj; } } } } } } if (!fpc.paused) { if (actualObject != null && actualObject.canInteractWith) { tempObject = actualObject; float baseEmit = tempObject.baseEmitStrength; foreach (var item in tempObject.GetComponentsInChildren <Renderer>()) { if (item.material.HasProperty("_EmitStrength")) { if (item.material.GetFloat("_EmitStrength") == baseEmit) { item.material.SetFloat("_EmitStrength", 0.25f); } } } cursorImage.sprite = cursorHover; if (Vector3.Distance(fpc.transform.position, tempObject.transform.position) < actualObject.individualDetectionDistance) { if (PlayerSpellbook.namesFound.Contains(actualObject.trueName)) { displayName.text = actualObject.trueName; } else { displayName.text = "?"; } cursorImage.sprite = cursorClick; if (Input.GetKeyDown(KeyCode.Joystick1Button0) || Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown(KeyCode.Mouse0)) { witch.Identify(actualObject.trueName, actualObject.gameObject); actualObject.Interact(); } } } } }