Árboles de comportamiento :: Acciones que tardan más de un tic

Por lo que entiendo en Árboles de comportamiento, cada comportamiento debe ser una acción orientada a objectives cortos que se puede hacer en algunas iteraciones.

Entonces, por ejemplo, a continuación se muestra una image de un Árbol de Comportamiento:

enter image description here

Ahora supongamos que el comportamiento de Drive To Enemy requiere más de unas pocas iteraciones en el tree. Por lo tanto, en cada pasada se llama Drive To Enemy porque ahora está en estado de ejecución .

El problema es que quiero llamar Evade Enemy si hay un Enemigo cerca. Y teniendo en count que siempre se llama Drive To Enemy , nunca tengo la oportunidad de llamar Evade Enemy ( Debería llamarse Evitar Enemigo ).

  • ¿Debo atravesar el tree CADA pase sin importar qué acción se está ejecutando actualmente?
  • ¿Voy por esto de la manera correcta?
  • ¿Cuál es la forma correcta de manejar tal comportamiento?

Originalmente preguntado en Stackoverflow. Pensar aquí sería un lugar más apropiado para hacer esta pregunta.

Ver la image que proporcioné en mi respuesta anterior :

enter image description here

Si imaginas que el nodo 1 es 'Evade Enemy' y el nodo 2 es 'Chase Enemy', verás que a pesar de que en la segunda iteración (cuando todo está en verde excepto '2' y 'B' es cuando la segunda iteración comienza), 'Evasión Enemigo' todavía se verifica primero. Solo cuando 'Evade Enemy' falla, porque no hay enemigos cerca, se activa 'Chase Enemy' nuevamente. Cuando se vuelve a visitar "Chase Enemy", se da count de que está en el estado "en ejecución" y salta directamente a "B".

Esto significa que cada vez que se revisa el tree, siempre se desplazará de izquierda a derecha. Incluso cuando un nodo está marcado como en ejecución, los nodos de mayor prioridad aún se verifican primero.

No estoy seguro si quieres procesar tus nodos de derecha a izquierda, pero así es como pareces tenerlos orderados (es decir, debajo de evadir al enemigo, ubicar al enemigo a la derecha de la unidad en dirección opuesta). Si necesita más explicaciones, debe preguntar en el chat o en alguna de sus preguntas existentes sobre el tema.