private void Update() { RaycastHit hit; Vector3 horizontal = transform.right * Input.GetAxisRaw("Horizontal"); Vector3 verticale = transform.forward * Input.GetAxisRaw("Vertical"); Vector3 velocity = (horizontal + verticale).normalized * speed; Vector3 rotation = new Vector3(0, Input.GetAxisRaw("Mouse X"), 0) * mouseXSensitivity; float camRotation = Input.GetAxisRaw("Mouse Y") * mouseYSensitivity; // Set Player velocity and rotation in Engine if (!freeze) { pEngine.SetVelocity(velocity); pEngine.SetRotation(rotation, camRotation); } else { pEngine.SetVelocity(Vector3.zero); pEngine.SetRotation(Vector3.zero, 0); } if (Physics.Raycast(cam.transform.position, cam.transform.forward, out hit, 3, mask) && Input.GetKeyDown(KeyCode.E)) { LightController lamp = hit.collider.gameObject.GetComponent <LightController>(); GameObject task = GetTaskByName(lamp._task); if (task == null || lamp.IsActive() || task.activeInHierarchy) { return; } //Prepare user for interface freeze = true; Cursor.visible = true; Debug.Log("Activate task: " + task.name); task.SetActive(true); // Wait for finish StartCoroutine(WaitComplete(lamp, task)); } }