BT Simple Parallel
Tipo: Exec (In → Out)
Categoría: AI_BT
Resultado: siempre RUNNING
Ejecuta una acción de fondo en cada frame (escribiendo un valor al blackboard) mientras la ejecución principal continúa por Out. Permite simular paralelismo: una tarea que ocurre continuamente mientras el árbol procesa otras ramas.
Propiedades
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
| BB Key | String | "" |
Clave del blackboard a actualizar cada frame |
| BB Value | String | "True" |
Expresión Python evaluada cada frame para el valor |
Sockets
| Socket | Dirección | Tipo |
|---|---|---|
| In | Entrada | Exec |
| Out | Salida | Exec |
Comportamiento
Cada frame que el nodo ejecuta:
- Evalúa
BB Valuecomo expresión Python. - Escribe el resultado en
self._bt_bb[BB Key]. - Fija
_bt_last_result = 'RUNNING'. - Continúa por
Out.
Si BB Key está vacío, el paso 2 se omite (pass).
Casos de uso
Actualizar posición del objetivo continuamente
BB Key: target_pos
BB Value: self.own.scene.objects.get('Player').worldPosition.copy() if self.own.scene.objects.get('Player') else None
El blackboard siempre tendrá la posición actualizada del jugador, disponible para BTCondition o BTMoveTo en el mismo frame.
Marcar estado activo
BB Key: is_chasing
BB Value: True
Mientras este nodo esté en el árbol activo, is_chasing permanece True.
Calcular distancia al objetivo
BB Key: dist_to_player
BB Value: (self.own.worldPosition - self.own.scene.objects.get('Player', self.own).worldPosition).length
Posición en el grafo
[OnUpdate] → [BT Simple Parallel: actualizar target_pos]
│
Out ──► [BT Condition: enemy_visible] → ...
Colócalo al inicio del árbol para que los datos de fondo estén frescos antes de evaluar condiciones.
Notas
- Siempre devuelve
RUNNING— no puedeSUCCESSniFAILURE. Si necesitas un resultado condicional, usa BTCustomTask o BTService. - A diferencia de BTService, BT Simple Parallel ejecuta su código cada frame, no en intervalos.
- Errores en
BB Valueno crashean el árbol — el campo se omite silenciosamente si está vacío.