diff --git a/core/ai/agents/base/ai_base.gd b/core/ai/agents/base/ai_base.gd index 05718bb..8a203b3 100644 --- a/core/ai/agents/base/ai_base.gd +++ b/core/ai/agents/base/ai_base.gd @@ -58,6 +58,13 @@ func _physics_process(delta: float) -> void: func navigate_to_random_point() -> void: var nav_map_rid = get_world_3d().get_navigation_map() var patrol_radius = patrol_radius_shape.shape.radius - var target_point_in_space = global_position + Vector3(randf_range(-1, 1), 0, randf_range(-1, 1)).normalized() * randf_range(0, patrol_radius) - var closest_valid_point = NavigationServer3D.map_get_closest_point(nav_map_rid, target_point_in_space) - nav_agent.target_position = closest_valid_point + + for i in range(10): + var target_point_in_space = global_position + Vector3(randf_range(-1, 1), 0, randf_range(-1, 1)).normalized() * randf_range(0, patrol_radius) + var closest_valid_point = NavigationServer3D.map_get_closest_point(nav_map_rid, target_point_in_space) + nav_agent.target_position = closest_valid_point + + if nav_agent.is_target_reachable(): + return + + nav_agent.target_position = global_position