import carla import random # Angenommen, wir haben bereits "world" und "blueprint_library" erhalten # world = client.get_world() # blueprint_library = world.get_blueprint_library() # Holen Sie sich die Blueprints für Fußgänger und deren Steuerungs-KI walker_blueprints = blueprint_library.filter("walker.pedestrian.*") controller_bp = blueprint_library.find('controller.ai.walker') # Anzahl der zu spawnenden Fußgänger festlegen num_of_walkers = 50 # Erstellen der Spawn-Punkte für die Fußgänger (hier zufällig mit world.get_random_location_from_navigation()) spawn_points = [] for i in range(num_of_walkers): spawn_loc = world.get_random_location_from_navigation() if spawn_loc is not None: spawn_points.append(carla.Transform(spawn_loc, carla.Rotation(yaw=random.uniform(-180.0, 180.0)))) # Spawn der Fußgänger als Batch walkers_id = [] batch = [] for spawn_point in spawn_points: walker_bp = random.choice(walker_blueprints) # Einige Fußgänger-Blueprints haben spezielle Attribute, z. B. Unverwundbarkeit # Diese können nach Bedarf angepasst werden if walker_bp.has_attribute('is_invincible'): walker_bp.set_attribute('is_invincible', 'false') # Fußgänger können umgestoßen werden batch.append(carla.command.SpawnActor(walker_bp, spawn_point)) results = client.apply_batch_sync(batch, True) for r in results: if r.error: print("Fehler beim Spawnen des Fußgängers:", r.error) else: walkers_id.append(r.actor_id) # Erstellen eines KI-Controllers für jeden Fußgänger controllers_id = [] batch = [] for wid in walkers_id: # Ein Controller wird mit dem jeweiligen Fußgänger verbunden (dritter Parameter ist die ID des Eltern-Actors) batch.append(carla.command.SpawnActor(controller_bp, carla.Transform(), wid)) results = client.apply_batch_sync(batch, True) for r in results: if r.error: print("Fehler beim Spawnen des Controllers:", r.error) else: controllers_id.append(r.actor_id) # Holen Sie sich die neu erstellten Fußgänger und ihre Controller all_actors = world.get_actors(walkers_id + controllers_id) walkers_list = all_actors.filter("*walker.pedestrian*") controllers_list = all_actors.filter("*controller.ai.walker*") # Starten der Controller, damit sich die Fußgänger zufällig bewegen for controller in controllers_list: # Starten des KI-Controllers controller.start() # Zufälliges Ziel für den Fußgänger festlegen controller.go_to_location(world.get_random_location_from_navigation()) # Geschwindigkeit des Fußgängers einstellen (in m/s) controller.set_max_speed(1.4) print(f"Erfolgreich {len(walkers_list)} Fußgänger mit Controllern gespawnt.")