Если — то — иначе

1 -> 2 ИЛИ 3

Узел IfThenElse работает по классическому принципу «if-then-else». Он помогает выбрать следующее действие в зависимости от того, выполнено условие или нет.

Самый левый узел — это Condition. Если он возвращает Success, выполняется средний узел (Then). Если условие не выполняется и возвращает Failure, выполняется самый правый узел (Else), если он задан.

IfThenElse

Сравнение с узлами Selector и Sequence

IfThenElse via Selector

В более компактной нотации EyeAuras это может выглядеть так:

Преимущества

  • Чётко отделяет условие от последующих действий (Then/Else), что улучшает читаемость и понимание логики.
  • Хорошо подходит для простых условий и реакций, где важно явно разделить действия.
  • Удобен, когда нужно наглядно выразить логику «if-then-else» без перебора нескольких вариантов.

Недостатки

  • Менее удобен для сложных сценариев с большим количеством условий и возможных действий.
  • Если условий и действий много, узлы Selector или Sequence могут оказаться удобнее и эффективнее.

Если вам нужно просто последовательно проверять действия слева направо и останавливаться на первом успешном, лучше использовать Selector. Если важно выполнять несколько действий строго по порядку, подойдёт Sequence.

Примеры использования

1. Выбор поведения по типу цели

Предположим, персонаж встречает врага и должен действовать по-разному в зависимости от того, босс это или обычный моб.

text
IfThenElse
├── Condition: "Is the target a boss?"
├── Then: "Use special boss skills"
└── Else: "Use regular skills"

Такой подход наглядно разделяет поведение для обычных противников и особых случаев.

2. Избежание опасности

Персонаж должен либо покинуть опасную зону, если находится в ней, либо продолжить движение по обычному маршруту.

text
IfThenElse
├── Condition: "Is the character in a dangerous zone?"
├── Then: "Leave the dangerous zone"
└── Else: "Follow the regular route"

В этом примере чётко разделены две разные стратегии поведения в зависимости от текущей ситуации.

Как это работает

  1. Выполняется левый узел (Condition).
  2. Если он возвращает Success, выполняется средний узел (Then).
  3. Если он возвращает Failure, выполняется самый правый узел (Else), если он указан.
  4. Узел IfThenElse возвращает статус последнего выполненного узла (Then или Else).
  5. Если правый узел (Else) отсутствует и условие не выполнено, весь узел IfThenElse возвращает Failure.

Узел IfThenElse позволяет легко задавать разные реакции персонажа в игровых ситуациях и делать поведение более гибким.

Не перепутайте: IfThenElse явно разделяет условие и два варианта действия, в отличие от узла Selector, который просто перебирает действия слева направо до первого успешного.