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 ![]()
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)