Sequence

1 -> 2 -> 3

Нода Sequence выполняет своих детей по порядку, слева направо. Если какой-либо из детей вернул Failure, выполнение ноды Sequence прекращается, и она тоже возвращает Failure. Если все дети вернули Success, нода Sequence возвращает Success.

Пример применения:

  1. Применение скилла по цели: Example 1

Логика такая - если 1-ая или 2-ая проверка вернут Failure, то до каста скилла дело не дойдет. Если же обе вернут Success, то персонаж попробует применить скилл. Обычно нужно применять вместе в комбинации с нодой Selector.

При этом располагать ноды можно так, как вашей душе угодно, главное помнить, что обход будет слева направо. Example 1-1 vertical layout

  1. Ротация скиллов - Selector + Sequence: А теперь давайте построим уже полноценную ротацию

c5do0cg[1].png

Что же здесь происходит - для начала, мы используем ноду Sequence(1), которая объединяет еще одну Sequence(2) и Selector(5). Sequence(2) отвечает за проверки "А можем ли мы вообще бить?", т.е. мы живы и выбрана цель. В реальных примерах сюда еще могут примешиваться проверки HP, нахождения в городе и так далее. Если любая из проверок не выполнится - дерево уйдет на следующий цикл, так и не попытавшись атаковать. Если же мы живы и у нас есть цель, то дальше нужно выбрать "А как же именно мы будем атаковать выбранную цель?".

Для упрощения здесь всего 2 варианта:

  • если у нас готов скилл Aura Is Active(7), то мы применим его Execute Aura(8), здесь внутри может быть тот же Send Sequence
  • если скилл не готов - бьем базовой атакой

В реальных сценариях сама ротация может быть сильно сложнее - нужно проверять ресурсы(HP/MP/кулдауны), можно проверять приоритетность текущей цели (если мало HP у цели - нет смысла бить сильным скиллом) и т.п.

Работа ноды:

  1. Нода Sequence выполняет своих детей по порядку.
  2. Если какой-либо ребенок вернул Failure, Sequence возвращает Failure.
  3. Если все дети вернули Success, Sequence возвращает Success.
  4. Если какой-либо ребенок вернул Running, Sequence запоминает его и продолжает выполнение с него при следующем обновлении.

Использование ноды Sequence позволяет создавать последовательные цепочки действий в деревьях поведения, где важен порядок выполнения задач.

Не путайте! Sequence останавливается на первой же ноде, которая вернула Failure, а Selector останавливается на первой ноде, которая вернула Success.