Make character snap to a specific direction

kind of a repost but:
I’m coding an Isometric game with a 3d character which looks pixelated. Therefore it looks unnatural for the character to slowly turn to its desired position and would look better if it just snapped. What I mean is if it is pointing right, instead of turning forward when the W key is pressed, it would just snap there or at least turn in that direction faster and start walking. Any clue how I would go about doing this? This is the code I currently use to move my character:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement: MonoBehaviour {
[SerializeField]
float moveSpeed = 4f;
public Animator anim;
Vector3 forward, right;
void Start()
{
     forward = Camera.main.transform.forward;
     forward.y = 0;
     forward = Vector3.Normalize(forward);
     right = Quaternion.Euler(new Vector3(0, 90, 0)) * forward;
}
void Update()
{
     if(Mathf.Abs(Input.GetAxis("Horizontal"))>0f)
     {
         anim.SetBool("Running", true);
     }
     if(Mathf.Abs(Input.GetAxis("Vertical"))>0f)
     {
         anim.SetBool("Running", true);
     }
     if(!Input.GetKey(KeyCode.A)&&!Input.GetKey(KeyCode.W)&&!Input.GetKey(KeyCode.S)&&!Input.GetKey(KeyCode.D))
     {
         anim.SetBool("Running", false);
     }
     if(Input.anyKey)
     {
         Move();
     }
}
void Move()
{
     Vector3 direction = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
     Vector3 rightMovement = right * moveSpeed * Time.deltaTime * Input.GetAxis("Horizontal");
     Vector3 upMovement = forward * moveSpeed * Time.deltaTime * Input.GetAxis("Vertical");
    
     Vector3 heading = Vector3.Normalize(rightMovement + upMovement);
    
     transform.forward = heading;
     transform.position += rightMovement;
     transform.position += upMovement;
    
}
    
}

Probably easiest to inspect the heading temporary variable and only allow the largest direction to stay nonzero.

On or about line 42 above…

if (Mathf.Abs( heading.x) > Mathf.Abs( heading.z)
{
  heading.z = 0;
}
else
{
  heading.x = 0;
}

(Assuming you’re moving in the X/Z plane, which it sorta looks like you are…

EDIT: you might want to only do the snap (your line 43 above) when the magnitude of the heading vector is greater than a certain small amount, like 0.1f or so, to avoid near-zero direction chattering.