private void HandleCharacterNavigation() { AICharacterInputs aiCharacterInputs = new AICharacterInputs(); if ((character.transform.position - destination).magnitude <= 0.2f) { aiCharacterInputs.MoveVector = Vector3.zero; // Apply inputs to character character.SetInputs(ref aiCharacterInputs); return; } if (NavMesh.CalculatePath(character.transform.position, destination, NavMesh.AllAreas, _path)) { _lastValidDestination = destination; } else { NavMesh.CalculatePath(character.transform.position, _lastValidDestination, NavMesh.AllAreas, _path); } int cornersCount = _path.GetCornersNonAlloc(_pathCorners); //Calculate path corners if (cornersCount >= 1) { // Build the CharacterInputs struct aiCharacterInputs.MoveVector = (_pathCorners[1] - character.transform.position).normalized; // Apply inputs to character character.SetInputs(ref aiCharacterInputs); } else { // Build the CharacterInputs struct aiCharacterInputs.MoveVector = Vector3.zero; // Apply inputs to character character.SetInputs(ref aiCharacterInputs); } }
private void HandleCharacterInput() { PlayerCharacterInputs characterInputs = new PlayerCharacterInputs() { MoveAxisForward = Input.GetAxisRaw(VerticalInput), MoveAxisRight = Input.GetAxisRaw(HorizontalInput), CameraRotation = mainCamera.transform.rotation, MovementMethod = movementMethod, RotationMethod = rotationMethod }; characterController.SetInputs(ref characterInputs); }