/// <summary> /// This is called every frame by ExamplePlayer in order to tell the character what its inputs are /// </summary> public void SetInputs(ref RobotCharacterInputs inputs) { // Clamp input Vector3 moveInputVector = Vector3.ClampMagnitude(new Vector3(inputs.MoveAxisRight, 0f, inputs.MoveAxisForward), 1f); // Calculate camera direction and rotation on the character plane //Vector3 cameraPlanarDirection = Vector3.ProjectOnPlane(inputs.CameraRotation * Vector3.forward, Motor.CharacterUp).normalized; //if (cameraPlanarDirection.sqrMagnitude == 0f) //{ // cameraPlanarDirection = Vector3.ProjectOnPlane(inputs.CameraRotation * Vector3.up, Motor.CharacterUp).normalized; //} //Quaternion cameraPlanarRotation = Quaternion.LookRotation(cameraPlanarDirection, Motor.CharacterUp); switch (CurrentCharacterState) { case CharacterState.Default: { // Move and look inputs _moveInputVector = /*cameraPlanarRotation * */ moveInputVector; _lookInputVector = _moveInputVector.normalized; if (!LockJump) { // Jumping input if (inputs.JumpDown) { _timeSinceJumpRequested = 0f; _jumpRequested = true; } } break; } } }
private void HandleCharacterInput() { var characterInputs = new RobotCharacterInputs(); // Build the CharacterInputs struct characterInputs.MoveAxisForward = Input.GetAxisRaw(VerticalInput); characterInputs.MoveAxisRight = Input.GetAxisRaw(HorizontalInput); characterInputs.JumpDown = Input.GetKeyDown(KeyCode.Space); //characterInputs.CrouchDown = Input.GetKeyDown(KeyCode.C); //characterInputs.CrouchUp = Input.GetKeyUp(KeyCode.C); // Apply inputs to character Character.SetInputs(ref characterInputs); }