extends Path3D var clock := 0. func _get_spawn_pos() -> Vector3: return curve.samplef(randf_range(0, curve.point_count)) func _spawn_police_car(p: Vector3) -> void: var car: Node3D = preload("police_car.tscn").instantiate() car.position = p + Vector3.UP * 0.1 add_sibling(car) func _process(delta: float) -> void: clock -= delta if clock <= 0: clock = 5. var ps: Array[Vector3] while ps.size() < 5: var p := _get_spawn_pos() if ps.any(func(_p): return _p.distance_to(p) < 3.): break ps.push_back(p) for p in ps: _spawn_police_car(p)