// Start is called before the first frame update void Start() { anim = GetComponent <Animator>(); powerBay = GameObject.Find("Power Bay").GetComponent <TerminalBay>(); currentScene = SceneManager.GetActiveScene(); boombotMovement = GameObject.Find("Boom Bot").GetComponent <Movement>(); }
void placeObject(GameObject bay) { Debug.Log("placing object"); isHoldingObject = false; heldObject.transform.SetParent(null); heldObject.transform.position = bay.transform.position; heldObject.transform.rotation = bay.transform.rotation; Rigidbody rb = heldObject.GetComponent <Rigidbody>(); TerminalBay targetBay = bay.GetComponent <TerminalBay>(); SpeechService.Instance.SpeakMessage($"{heldObject.name} inserted in to {bay.name}"); targetBay.AttachObjectToBay(heldObject); heldObject.transform.SetParent(targetBay.transform.parent.gameObject.transform); //notifies the heldObject that is has been installed in a terminal. portableObject po = heldObject.GetComponent <portableObject>(); po.InstallObject(); }
// Update is called once per frame void Update() { handPosition = new Vector3(Camera.main.transform.localPosition.x, Camera.main.transform.localPosition.y - 1f, Camera.main.transform.localPosition.z + 1f); if (Input.GetMouseButtonDown(1)) { viewLocked = false; GetComponent <FirstPersonController>().enabled = true; terminalBeepsScript.resetTerminalStartupAndRunningSound(); terminalBeepsScript.terminalOffSound.Play(); } if (Input.GetMouseButtonDown(0)) { RaycastHit rhInfo; //If an object is clicked... if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out rhInfo, interactionRange, ignorePlayerMask)) { //Debug.Log("clicked on " + rhInfo.collider.name + " with tag" + rhInfo.collider.gameObject.tag); //Debug.Log("holding? "+ isHoldingObject + " " ); //..and if that object is a Terminal Monitor if (rhInfo.collider.gameObject.tag == "TerminalMonitor") { //Debug.Log("rhInfo.collider.gameObject.tag == TerminalMonitor"); //Debug.Log("Monitor Clicked"); viewLocked = true; targetMonitor = rhInfo.collider.gameObject.GetComponent <TerminalMonitor>(); targetTerminal = targetMonitor.GetComponentInParent <Terminal>(); initialPlayerPosition = transform.position; lockedCameraPosition = targetTerminal.transform.TransformPoint(Vector3.left * 1.25f); lockedCameraPosition.y = initialPlayerPosition.y; terminalBeepsManager.transform.position = targetTerminal.transform.position; terminalBeepsScript.playInitialBeep(); terminalBeepsScript.playDelayedBeeps(); terminalBeepsScript.playTerminalStartupAndRunningSound(); if (targetTerminal.terminalType == Terminal.TerminalTypes.JobSelection) { jobsManager.GenerateAvailableJobs(); } if (targetTerminal.terminalType == Terminal.TerminalTypes.TerminalStore) { terminalStore.GenerateAvailableTerminals(); } //..and if that object is a terminal bay and the player holds an object } else if (rhInfo.collider.gameObject.tag == "TerminalBay") { if (isHoldingObject) { placeObject(rhInfo.collider.gameObject); } else { //...and if that terminal bay already has an object installed. targetBay = rhInfo.collider.gameObject.GetComponent <TerminalBay>(); if (targetBay.IsModuleInstalled()) { //GameObject installedObject = targetBay.GetInstalledObject(); //portableObject po = installedObject.GetComponent<portableObject>(); //po.DeactivateObject(); } } } else if (rhInfo.collider.gameObject.tag == "TerminalPlacementCollider") { Debug.Log("placement Collider clicked"); targetTerminal = rhInfo.collider.gameObject.GetComponentInParent <Terminal>(); portableObject po = heldObject.GetComponent <portableObject>(); po.PlaceTerminal(targetTerminal.transform.position); //...and if the object is not interactable and the player holds an object. } else if (isHoldingObject) //end of if isHoldingObject and target is TerminalBay. { dropObject(); //...and if the object is a movable object } else if (rhInfo.collider.gameObject.tag == "MovableObject") // wasn't yet isHoldingObject { portableObject po = rhInfo.collider.gameObject.GetComponent <portableObject>(); if (!po.IsObjectInstalled()) { pickUpObject(rhInfo.collider.gameObject); } else { po.ActivateObject(); } } } //end of if a raycast hits something } // end of if mouse button 0 is pressed if (Input.GetKeyDown(KeyCode.E)) { if (isHoldingObject) { portableObject po = heldObject.GetComponent <portableObject>(); if (po.IsFireExtinguisher()) { po.ToggleIsSpraying(); source = po.GetComponent <AudioSource>(); source.Play(); RaycastHit rhInfo; //If an object is clicked... if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out rhInfo, fireExtinguisherRange, ignorePlayerMask)) { //..and if that object is a Fire Collider if (rhInfo.collider.gameObject.tag == "FireCollider") { Debug.Log("FC clicked"); targetTerminal = rhInfo.collider.gameObject.transform.parent.gameObject.GetComponent <Terminal>(); if (targetTerminal.isBurning) { targetTerminal.ToggleIsBurning(); } } // if (targetTerminal.isBurning) //{ // targetTerminal.ToggleIsBurning(); //} } } } } if (Input.GetKeyUp(KeyCode.E)) { if (isHoldingObject) { portableObject po = heldObject.GetComponent <portableObject>(); if (po.IsFireExtinguisher()) { po.ToggleIsSpraying(); } } } if (isHoldingObject) { MoveObjectToHands(); } if (viewLocked) { GetComponent <FirstPersonController>().enabled = false; mainCamera.transform.LookAt(targetMonitor.transform); transform.position = lockedCameraPosition; } } // end of Update()
void Start() { door = GameObject.Find("Door (3)").GetComponent <Door>(); jobManager = GameObject.Find("Game Managers").GetComponent <Jobs>(); powerBay = GameObject.Find("Power Bay").GetComponent <TerminalBay>(); }