NavigationAgent2d is_target_reached is always returning false even when distance_to_target is 0

Godot Version



I have a simple scene with a NavigationRegion2D and has a CharacterBody2D with a NavigationAgent2D. Everything is using default settings. I have baked a simple rectangle shape for the NavigationRegion2D. The navigation is working, and everything looks fine, but the is_target_reached function is always returning false, even when distance_to_target is returning 0.

Why is the is_target_reached not returning true when the distance_to_target is 0?

Here is my code for the CharacterBody2D.

extends CharacterBody2D
class_name Character

const SPEED: float = 200.0

@onready var nav: NavigationAgent2D = $NavigationAgent2D

func _physics_process( delta ):
	# Get the next point along the path
	var next_point = nav.get_next_path_position()

	# Calculate the squared distance to the next point
	var distance_to_next_point_squared = position.distance_squared_to(next_point)

	# Calculate the squared stopping distance
	var max_travel_distance_squared = (SPEED * delta) * (SPEED * delta)

	# If we are close to the target, clamp the velocity
	if distance_to_next_point_squared < max_travel_distance_squared:
		velocity = (next_point - position) / delta
		# Calculate the desired velocity
		var direction = (next_point - position).normalized()
		velocity = direction * SPEED

	# Move the character
	if nav.is_target_reached():
		print( "Target Reached" )
		print( nav.distance_to_target() )

func set_target_position( pos: Vector2 ) -> void:
	nav.target_position = pos

Here is my simple script for setting the target position by clicking the mouse:

extends Camera2D

@export var character: Character

var mouse_pos_global = Vector2()

func _process( delta ):
	if Input.is_action_just_pressed( "LeftMouseButton" ):
		character.set_target_position( mouse_pos_global )
func _input( event ):
	if event is InputEventMouse:
		mouse_pos_global = get_global_mouse_position()

Please test with the current Godot 4.3dev6 as there have been a few changes to this in the last beta versions that might already changed this.