private void ToggleSecurityCamSfx(DoorTeleport whichTeleporter) { if (securityCam.isOn == true) { if (whichTeleporter.name == "DormToHall" || whichTeleporter.name == "KitchenToHall") { SoundManager.instance.m_securityCamSource.Play(); //Debug.Log("Entering Hallway"); } else if (whichTeleporter.name == "HallToDorm" || whichTeleporter.name == "HallToKitchen") { SoundManager.instance.m_securityCamSource.Stop(); //Debug.Log("Exiting Hallway"); } } }
// Update is called once per frame void Update() { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (EventSystem.current.IsPointerOverGameObject()) { // Debug.Log("Raycast blocked by clicking on UI element"); return; } if (Physics.Raycast(ray, out hit, 100, clickMask)) { UseItemOnThis uiotScript = hit.collider.GetComponent <UseItemOnThis>(); if (Input.GetMouseButtonUp(0)) { if (uiotScript != null) { if (uiotScript.hasAlreadyActed) { Debug.Log("Already got the item it needs"); return; } if (inventory.ItemIsSelected()) { if (inventory.UseCurrentItemIfAble(uiotScript)) { return; } } else { Debug.Log("No item selected"); } //return; } //If currently doing move to interact, interupt it early, and stop the coroutine that is polling distance if (moveToInteract) { moveToInteract = false; StopCoroutine(PollInteractDistance()); } //Click on a door to teleport player to adjacent room DoorTeleport teleportFrom = hit.collider.GetComponent <DoorTeleport>(); if (teleportFrom != null) { transform.position = teleportFrom.teleportDestination.transform.position; transform.rotation = teleportFrom.teleportDestination.transform.rotation; navMeshAgent.SetDestination(transform.position); SoundManager.instance.PlaySingle(SoundManager.instance.m_doorOpen); ToggleSecurityCamSfx(teleportFrom); return; //Debug.Log("I can teleport you"); } GiveObject goScript = hit.collider.GetComponent <GiveObject>(); if (goScript != null || hit.collider.tag == "Object") { //We have clicked on object that has dialogue or can be picked up, check if it is in range if (IsInInteractRange(transform.position, hit.transform.position)) { //In range, call the DoInteract function DoInteract(hit.collider.gameObject); } else //not in range, start moving towards it, try picking it up again after a short delay { //Set move to destination, Start co routine to check again soon interactHit = hit; //store what we clicked on, so we can check it again later moveToInteract = true; StartCoroutine(PollInteractDistance()); //start polling distance navMeshAgent.SetDestination(hit.point); } } else { navMeshAgent.SetDestination(hit.point); } } // end GetMouseButtonUp ObjectHighlight ohNow = hit.collider.GetComponent <ObjectHighlight>(); if (ohNow != mousedOverCurrently) { if (mousedOverCurrently != null) { mousedOverCurrently.mouseHoverRemoveTint(); } mousedOverCurrently = ohNow; if (mousedOverCurrently != null) { mousedOverCurrently.mouseHoverTint(); } } // end ohNow != mousedOverCurrently } // end Pyhsics.Raycast check }