//Tracks player inputs private void Update() { //Flashlight following mouse Vector3 mousePos = Input.mousePosition; mousePos.z = 0f; Vector3 objectPos = Camera.main.WorldToScreenPoint(transform.position); mousePos = mousePos - objectPos; Quaternion lookMouse = Quaternion.LookRotation(mousePos, Vector3.back); lookMouse.x = 0; lookMouse.y = 0; flashlight.transform.rotation = Quaternion.RotateTowards(transform.rotation, lookMouse, 360f); //Input for rolling if (Input.GetKeyDown("space") && (rollOneShot == null || !rollOneShot.Running)) { rollOneShot = new Task(roll()); } //Inputs for firing arrow if (Input.GetMouseButtonDown(1)) { crosshair.SetActive(true); soundManager.Play("Pull_Bow_Back"); } else if (Input.GetMouseButton(1)) { //Push crosshair towards mouse mousePos = Input.mousePosition; mousePos.z = 0f; objectPos = Camera.main.WorldToScreenPoint(transform.position); mousePos = mousePos - objectPos; if (mousePos.normalized != (crosshair.transform.position - transform.position).normalized) { crosshair.transform.position = mousePos.normalized * (crosshair.transform.position - transform.position).magnitude + transform.position; } if ((crosshair.transform.position - transform.position).magnitude < bowData.getRange()) { crosshair.transform.Translate(mousePos.normalized * Time.deltaTime * bowData.getAimSpeed()); } if (Input.GetMouseButtonDown(0)) { float angleRestrictions = 40f; float currAngle = angleRestrictions; float angleStepCount = angleRestrictions * 2 / (bowData.getArrowShootCount() - 1); if (bowData.getArrowShootCount() == 1) { gun.Fire(bullet, 0, bowData.getDmg()); } else { for (int i = 0; i < bowData.getArrowShootCount(); ++i) { gun.Fire(bullet, currAngle, bowData.getDmg()); currAngle -= angleStepCount; } } soundManager.PlayOneShot("Shoot_Bow"); soundManager.Play("Pull_Bow_Back"); crosshair.transform.position = transform.position; } } else if (Input.GetMouseButtonUp(1)) { crosshair.SetActive(false); crosshair.transform.position = transform.position; soundManager.Stop("Pull_Bow_Back"); } //input for basic player movement playerMove(); }