private void Update() { #region Forwards and Backwards // forwards if (Input.GetKey(controls.forwards)) { playerMovement.moveInput.y = 1; } // backwards if (Input.GetKey(controls.backwards)) { if (Input.GetKey(controls.forwards)) { playerMovement.moveInput.y = 0; } else { playerMovement.moveInput.y = -1; } } // forwards, backwards nothing if (!Input.GetKey(controls.forwards) && !Input.GetKey(controls.backwards)) { playerMovement.moveInput.y = 0; } #endregion Forwards and Backwards #region Right and Left // Right if (Input.GetKey(controls.Right)) { playerMovement.moveInput.x = 1; } // Left if (Input.GetKey(controls.Left)) { if (Input.GetKey(controls.Right)) { playerMovement.moveInput.x = 0; } else { playerMovement.moveInput.x = -1; } } // Left, Right nothing if (!Input.GetKey(controls.Right) && !Input.GetKey(controls.Left)) { playerMovement.moveInput.x = 0; } #endregion Right and Left #region TurnRight and TurnLeft // set time on Keydown if (Input.GetKeyDown(controls.turnRight) || Input.GetKeyDown(controls.turnLeft)) { if (Mathf.Approximately(time, Time.time)) // prevent spamming key { time = Time.time - playerMovement.manualTurnFrequency; // no initial delay } } if (Input.GetKey(controls.turnRight) || Input.GetKey(controls.turnLeft)) { // TurnRight if (Input.GetKey(controls.turnRight)) { playerMovement.turnAxis = 1; } // TurnLeft if (Input.GetKey(controls.turnLeft)) { if (Input.GetKey(controls.turnRight)) { playerMovement.turnAxis = 0; } else { playerMovement.turnAxis = -1; } } if (Time.time - time >= playerMovement.manualTurnFrequency) { time = Time.time; Vector3 rotation = new Vector3(0, playerMovement.turnAxis * playerMovement.turnDegreePerFrequency, 0); playerCamera.ManualRotation(rotation); playerMovement.lookRotation.eulerAngles += rotation; } } // TurnRight, TurnLeft nothing if (!Input.GetKey(controls.turnRight) && !Input.GetKey(controls.turnLeft)) { playerMovement.turnAxis = 0; } #endregion TurnRight and TurnLeft #region Run // Todo: change run function togglable if (Input.GetKey(controls.run)) { playerMovement.runInput = true; if (playerMovement.moveInput.y < 0) { playerMovement.runInput = false; } } if (Input.GetKeyUp(controls.run)) { playerMovement.runInput = false; } #endregion Run #region Jump if (Input.GetKeyDown(controls.jump)) { playerMovement.jumpInput = true; } if (Input.GetKeyUp(controls.jump)) { playerMovement.jumpInput = false; } #endregion Jump #region Dash //if (Input.GetKeyDown(controls.forwards)) //{ // if (!movement.pressedOnce) // { // movement.pressedOnce = true; // movement.time = Time.time; // } // else // { // movement.dashInput = true; // movement.pressedOnce = false; // } //} //if (movement.pressedOnce) //{ // if (Time.time - movement.time > movement.timerLength) // { // movement.pressedOnce = false; // } //} #endregion Dash #region Mouse Drag playerMovement.mouseDrag = !Mathf.Approximately(Input.GetAxis(mouseXId), 0f) || !Mathf.Approximately(Input.GetAxis(mouseYId), 0f); if (playerMovement.mouseDrag) { playerController.tempFocus = null; } #endregion Mouse Drag #region MouseClick if (Input.GetMouseButton(0) || Input.GetMouseButton(1)) { // Face the camera's forward if (Input.GetMouseButton(1) && playerMovement.mouseDrag) { Vector3 cameraForward = playerCamera.transform.forward; cameraForward.y = 0f; playerMovement.lookRotation = Quaternion.LookRotation(cameraForward); } } // Down if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1)) { playerController.GetTargetUnderMouse(); } // Up if (Input.GetMouseButtonUp(0) || Input.GetMouseButtonUp(1)) { playerController.SetFocus(); } #endregion MouseClick #region Escape Key if (Input.GetKeyDown(KeyCode.Escape)) { if (playerController.focus) { playerController.RemoveFocus(); } else { // Todo: Escape key - open menu/option } } #endregion Escape Key // Stop following when the player moves if (playerMovement.moveInput != Vector2.zero) { playerController.isFollowing = false; } }