Если — то — иначе
1 -> 2 ИЛИ 3
Узел IfThenElse работает по классическому принципу «if-then-else». Он помогает выбрать следующее действие в зависимости от того, выполнено условие или нет.
Самый левый узел — это Condition. Если он возвращает Success, выполняется средний узел (Then). Если условие не выполняется и возвращает Failure, выполняется самый правый узел (Else), если он задан.

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

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

Преимущества
- Чётко отделяет условие от последующих действий (Then/Else), что улучшает читаемость и понимание логики.
- Хорошо подходит для простых условий и реакций, где важно явно разделить действия.
- Удобен, когда нужно наглядно выразить логику «if-then-else» без перебора нескольких вариантов.
Недостатки
- Менее удобен для сложных сценариев с большим количеством условий и возможных действий.
- Если условий и действий много, узлы Selector или Sequence могут оказаться удобнее и эффективнее.
Если вам нужно просто последовательно проверять действия слева направо и останавливаться на первом успешном, лучше использовать Selector. Если важно выполнять несколько действий строго по порядку, подойдёт Sequence.
Примеры использования
1. Выбор поведения по типу цели
Предположим, персонаж встречает врага и должен действовать по-разному в зависимости от того, босс это или обычный моб.
IfThenElse
├── Condition: "Is the target a boss?"
├── Then: "Use special boss skills"
└── Else: "Use regular skills"
Такой подход наглядно разделяет поведение для обычных противников и особых случаев.
2. Избежание опасности
Персонаж должен либо покинуть опасную зону, если находится в ней, либо продолжить движение по обычному маршруту.
IfThenElse
├── Condition: "Is the character in a dangerous zone?"
├── Then: "Leave the dangerous zone"
└── Else: "Follow the regular route"
В этом примере чётко разделены две разные стратегии поведения в зависимости от текущей ситуации.
Как это работает
- Выполняется левый узел (Condition).
- Если он возвращает
Success, выполняется средний узел (Then). - Если он возвращает
Failure, выполняется самый правый узел (Else), если он указан. - Узел IfThenElse возвращает статус последнего выполненного узла (Then или Else).
- Если правый узел (Else) отсутствует и условие не выполнено, весь узел IfThenElse возвращает
Failure.
Узел IfThenElse позволяет легко задавать разные реакции персонажа в игровых ситуациях и делать поведение более гибким.
Не перепутайте: IfThenElse явно разделяет условие и два варианта действия, в отличие от узла Selector, который просто перебирает действия слева направо до первого успешного.