Из того, что я понимаю в Деревьях Поведения, каждое Поведение должно быть коротким, ориентированным на цель Действие, которое может быть выполнено в несколько итераций.
Например, ниже приведено изображение Дерева Поведения:
Теперь давайте предположим, что поведение Drive To Enemy занимает больше, чем несколько итераций в дереве. Таким образом, на каждом проходе вызывается Drive To Enemy, потому что он сейчас находится в рабочем состоянии.
Проблема в том, что я хочу позвонить вражескому врагу, если враг рядом. И, учитывая, что Drive To Enemy всегда называют, у меня никогда не будет возможности позвонить Evade Enemy ( вероятно, следует называть Avoid Enemy ).
- Должен ли я проходить дерево КАЖДОГО прохода независимо от того, какое действие выполняется в данный момент?
- Я иду об этом правильным путем?
- Как правильно обращаться с таким поведением?
Первоначально спросил на Stackoverflow. Мысль здесь будет более подходящим местом, чтобы задать этот вопрос.
Ответы:
Смотрите изображение, которое я предоставил в моем предыдущем ответе :
Если вы представите, что узел 1 - «Уклонение от врага», а узел 2 - «Уклонение от врага», вы увидите, что даже во второй итерации (когда все зеленое, кроме «2», а «B» - когда вторая итерация начинается), 'Evade Enemy' все еще проверяется первым. Только когда «Evade Enemy» терпит неудачу, потому что поблизости нет врагов, «Chase Enemy» снова активируется. При повторном посещении «Chase Enemy» он замечает, что находится в состоянии «бега», и сразу переходит к «B».
Это означает, что каждый раз, когда дерево проверяется, оно всегда будет проходить слева направо. Даже когда узел помечен как работающий, узлы с более высоким приоритетом по-прежнему проверяются в первую очередь.
Я не уверен, что вы собираетесь обрабатывать ваши узлы справа налево, но именно так вы, кажется, располагаете их (то есть, если вы уклоняетесь от врага, найдите врага справа от диска в противоположном направлении). Если вам нужны дальнейшие объяснения, вы должны задать в чате или в одном из ваших существующих вопросов по теме.
источник