Character doesn't keep animation direction in grid movement

Godot Version

4.4.1,

Question

`The problem is, is that when spawning in and when stopping moving the character is looking up. What I want to do is when the character stops moving it keeps it’s direction but it switch to that direction’s idle animation. I’m using click to move AStarGrid movement. On the side my script doesn’t have variable character speed which I’d like to implement. Thanks

extends Node2D

@onready var tile_map: TileMapLayer = $"../TileMap"
@onready var sprite_2d: Sprite2D = $Sprite2D
@onready var animation_player: AnimationPlayer = $AnimationPlayer

var astar_grid: AStarGrid2D
var current_id_path: Array[Vector2i]
var current_point_path: PackedVector2Array
var target_position: Vector2
var is_moving: bool

enum FacingDirection {
	LEFT, RIGHT, DOWN, UP
}

func _ready():
	astar_grid = AStarGrid2D.new()
	astar_grid.region = tile_map.get_used_rect()
	astar_grid.cell_size = Vector2(32, 32)
	astar_grid.diagonal_mode = AStarGrid2D.DIAGONAL_MODE_NEVER
	astar_grid.update()
	
	for x in tile_map.get_used_rect().size.x:
		for y in tile_map.get_used_rect().size.y:
			var tile_position = Vector2i(
				x+tile_map.get_used_rect().position.x,
				y+tile_map.get_used_rect().position.y
			)
			var tile_data = tile_map.get_cell_tile_data(tile_position)
			if tile_position == null or tile_data.get_custom_data("Walkable") == false:
				astar_grid.set_point_solid(tile_position)
			
func _input(event):	
	if event.is_action_pressed("move") == false:
		return
		
	var id_path
	
	if is_moving:
		id_path = astar_grid.get_id_path(
			tile_map.local_to_map(target_position),
			tile_map.local_to_map(get_global_mouse_position())
		)
	else:
		id_path = astar_grid.get_id_path(
			tile_map.local_to_map(global_position),
			 tile_map.local_to_map(get_global_mouse_position())
		)
	if id_path.is_empty() == false:
		current_id_path = id_path
		
		current_point_path = astar_grid.get_point_path(
			tile_map.local_to_map(target_position),
			tile_map.local_to_map(get_global_mouse_position())
		)
		for i in current_id_path.size():
			current_point_path[i] = current_point_path[i] + Vector2(16, 16)

func _physics_process(_delta):
		if current_id_path.is_empty():
			return
		if is_moving == false:
			target_position = tile_map.map_to_local(current_id_path.front())
			is_moving = true
		global_position = global_position.move_toward(target_position, 1)
		if global_position == target_position:
				current_id_path.pop_front() 
				if current_id_path.is_empty() == false:
					target_position = tile_map.map_to_local(current_id_path.front())
				else:
					is_moving = false
		var walking_direction = target_position - global_position
		var facing_direction	
		if (abs(walking_direction.x) > abs(walking_direction.y)):
			if walking_direction.x > 0:						#walking x axis
				facing_direction = FacingDirection.RIGHT
				animation_player.play("walking_right")
			else:
				facing_direction = FacingDirection.LEFT
				animation_player.play("walking_left")
		else: 												#walking y axis
			if walking_direction.y > 0:
				facing_direction = FacingDirection.DOWN
				animation_player.play("walking_down")
			else:
				facing_direction = FacingDirection.UP
				animation_player.play("walking_up")
func _on_pressed():
	pass

`