Navigation - experimental

So Project got a bit upgraded to see how it will perform with multiple Agent’s

current code

extends CharacterBody3D

@onready var navigation_agent_3d: NavigationAgent3D = $NavigationAgent3D

func _unhandled_input(event: InputEvent) -> void:
	if event.is_action_pressed("ui_accept"):
		var random_position = Vector3.ZERO
		random_position.x = randf_range(-15.0, 15.0)
		random_position.z = randf_range(-5.0, 35.0)
		navigation_agent_3d.set_target_position(random_position)
		
func _physics_process(delta: float) -> void:
	var destination = navigation_agent_3d.get_next_path_position()
	var local_destination = destination - global_position
	var direction = local_destination.normalized()
	
	velocity = direction * 5.0
	move_and_slide()

This obviously will cause stuck when path is blocked by other Agents Bodies.

some progress :slight_smile:

added path3d and pathfollow3d nodes to make it go to set points.

extends CharacterBody3D

@onready var navigation_agent_3d: NavigationAgent3D = $NavigationAgent3D
@onready var path_follow_3d: PathFollow3D = get_tree().get_first_node_in_group("path_follow")

func _unhandled_input(event: InputEvent) -> void:
	if event.is_action_pressed("ui_accept"):
		var random_position = Vector3.ZERO
		random_position.x = randf_range(-15.0, 15.0)
		random_position.z = randf_range(-5.0, 35.0)
		navigation_agent_3d.set_target_position(path_follow_3d.global_position)
		
func _physics_process(delta: float) -> void:
	var destination = navigation_agent_3d.get_next_path_position()
	var local_destination = destination - global_position
	var direction = local_destination.normalized()
	
	velocity = direction * 5.0
	move_and_slide()

script to change a that a bit for now

extends NavigationRegion3D
@onready var path_3d: Path3D = $Path3D
@onready var path_follow_3d: PathFollow3D = $Path3D/PathFollow3D

func _ready() -> void:
	print(path_follow_3d.progress_ratio)


func _unhandled_input(event: InputEvent) -> void:
	if event.is_action_pressed("ui_accept"):
		path_follow_3d.progress_ratio += 0.1
		if path_follow_3d.progress_ratio >= 0.9:
			path_follow_3d.progress_ratio = 0.0
		print(path_follow_3d.global_position)