How would I make it where the character moves where its facing based on camera?

Im using Input Actions which I’m not too familiar with. How would I make it where the character moves where he is looking?

PlayerInput playerInput;
CharacterController characterController;
Animator animator; 

Vector2 currentMovementInput;
Vector3 currentMovement;
bool isMovementPressed;
public float rotationFactoredPerFrame = 1f;
public Transform camera;

float turnSmoothVelocity;

void Awake()
{
    playerInput = new PlayerInput();
    characterController = GetComponent<CharacterController>();
    animator = GetComponent<Animator>();

    playerInput.CharacterControls.Move.started += OnInputMovement;
    playerInput.CharacterControls.Move.canceled += OnInputMovement;
    playerInput.CharacterControls.Move.performed += OnInputMovement;

}

void HandleRotation()
{
   /* Vector3 postionToLookAt;

    postionToLookAt.x = currentMovement.x;
    postionToLookAt.y = 0;
    postionToLookAt.z = currentMovement.z;
    
    Quaternion currentRotation = transform.rotation;

    if(isMovementPressed)
    {
        Quaternion targerRotation = Quaternion.LookRotation(postionToLookAt);
        transform.rotation = Quaternion.Slerp(currentRotation, targerRotation, rotationFactoredPerFrame * Time.deltaTime);
    } */

    if(isMovementPressed)
    {
        float targetAngle = Mathf.Atan2(currentMovement.x, currentMovement.z) * Mathf.Rad2Deg + camera.eulerAngles.y;
        float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref turnSmoothVelocity, rotationFactoredPerFrame);
        transform.rotation = Quaternion.Euler(0f, targetAngle, 0f);
    }

}

void OnInputMovement(InputAction.CallbackContext context)
{
    currentMovementInput = context.ReadValue<Vector2>();
    currentMovement.x = currentMovementInput.x;
    currentMovement.z = currentMovementInput.y;
    isMovementPressed = currentMovementInput.x != 0 || currentMovementInput.y != 0;
}

void HandleAnimation()
{
    bool isWalking = animator.GetBool("isWalking");
    bool isRunning = animator.GetBool("isRunning");

    if(isMovementPressed && !isWalking)
    {
        animator.SetBool("isWalking", true);
    }
    else if(!isMovementPressed && isWalking)
    {
        animator.SetBool("isWalking", false);
    }
}

void Update()
{
    HandleAnimation();
    HandleRotation();
    characterController.Move(currentMovement * Time.deltaTime);
}

void OnEnable()
{
    playerInput.CharacterControls.Enable();
}

void OnDisable()
{
    playerInput.CharacterControls.Disable();
}

}

So I post my code where you can get both functions by removing the condition unless you want to
I know i used rigidbody so i think you can use Slerp to rotate

//the position where the camera look (so about the head)
lookPos = new Vector3(transform.position.x, transform.position.y + lookHeight, transform.position.z);

            _xRotation += Mouse_X * sensX * Time.smoothDeltaTime;
            _yRotation += -Mouse_Y * sensY * Time.smoothDeltaTime;

            _yRotation = Mathf.Clamp(_yRotation, limitUp, limitDown);

            Vector3 Direction = new Vector3(0, 0, -distance);
            Quaternion rotation = Quaternion.Euler(_yRotation, _xRotation, 0);
            _mainCamera.transform.position = lookPos + rotation * Direction;

            _mainCamera.transform.LookAt(lookPos);

            //remove this condition if you want to rotate always not only when moved
            if (_inputManager.Move != Vector2.zero)
            {
                _playerRigidbody.MoveRotation(Quaternion.Euler(0, _xRotation, 0));
            }