Character facing world z direction when stop moving?

hello there i have problem hope to find help to understand how to fix it
my problem is when the character stop moving it always change the direction it face to the world z direction
i really cant figure it out how to fix
i tried lookat() but this end that he never face the direction when moving

the code i use

public class MovementController : MonoBehaviour
{
    Vector3 _CharacterDirection;
    Quaternion _CharacterRotation=Quaternion.identity,_Look;
    Animator _CharacterAnim;
    Rigidbody _CharacterRigidbody;
    public float TurnSpeed;

    void Start()
    {
        _CharacterAnim = GetComponent<Animator>();
        _CharacterRigidbody = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        CharacterMovement();
    }

    void CharacterMovement()
    {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        _CharacterDirection.Set(h, 0, v);
        _CharacterDirection.Normalize();

        bool _IsHorizontalChange = !Mathf.Approximately(h, 0f);
        bool _IsVerticalChange = !Mathf.Approximately(v, 0);
        bool _IsWalking = _IsHorizontalChange || _IsVerticalChange;
        _CharacterAnim.SetBool("IsWalking", _IsWalking);

         Vector3 _DesairdForward = Vector3.RotateTowards(Vector3.forward, _CharacterDirection, TurnSpeed * Time.deltaTime, 0);
        _CharacterRotation = Quaternion.LookRotation(_DesairdForward);
       

        _CharacterRigidbody.MovePosition(_CharacterRigidbody.position + _CharacterDirection * Time.deltaTime);
        _CharacterRigidbody.MoveRotation(_CharacterRotation);
       
    }

In line 32 you specify _DesairdForward by using Vector3.forward. That’s world Z direction. You probably want this.transform.forward

as i understand i use this to rotate the character while moving to make it face his z direction is this right??

thank you