Что это: модульный combat brain для NPC, который соединяет NpcNavigation, RpgTargetSelector, RpgAttackController и NpcCombatPreset в один готовый автоматический боевой цикл.
Подходит для: melee NPC, ranged NPC, spell-caster NPC, patrol enemy с агро-переходом в бой.
NpcRpgCombatBrain не хранит тяжёлую боевую логику внутри NpcNavigation и не заставляет делать отдельный скрипт под каждого врага. Вместо этого он:
- получает/обновляет цель через
RpgTargetSelector - принимает решение через
NpcCombatDecisionCore - переключает
NpcNavigationвFollowTarget, когда цель далеко - удерживает позицию в attack range
- вызывает
RpgAttackControllerс конкретнымRpgAttackPreset - по завершении боя восстанавливает прошлый navigation mode, если это включено в
NpcCombatPreset
NpcNavigationRpgTargetSelectorRpgAttackControllerNpcCombatPreset
Обычно на том же объекте также нужен RpgCharacter.
Preset— профиль поведения NPCAuto Acquire Target— автоматически переискать цель, если текущей нетDisable Attack Controller Input— удобно для NPC, чтобы отключить player-style input наRpgAttackControllerDecision Interval— как часто brain пересчитывает решениеLook Origin— pivot, который разворачивается к цели перед атакой
On Target AcquiredOn Target LostOn Chase StartedOn Holding PositionOn Attack TriggeredOn Attack FailedOn Decision Changed
AutoResolveReferences()EvaluateNow()AcquireTarget()ClearCombatTarget()ForceAttack()
Для пошаговой сборки конкретных типов врагов используйте NpcCombatScenarios.
- Добавьте
NavMeshAgent - Добавьте
NpcNavigation - Добавьте
RpgCharacter - Добавьте
RpgTargetSelector - Добавьте
RpgAttackController - Добавьте
NpcRpgCombatBrain - Создайте
RpgAttackDefinitionдля ближней атаки - Создайте
RpgAttackPreset - Создайте
NpcCombatPresetс небольшойPreferred Attack Distance
Схема та же, но вместо отдельного скрипта меняются пресеты:
- у
RpgAttackDefinitionставитсяProjectileили нужная ranged/AoE схема - у
NpcCombatPresetвыставляется большаяPreferred Attack Distance - при необходимости NPC перестаёт двигаться внутри attack range
Так melee и ranged враги собираются из одного набора компонентов.
| Поле | Описание |
|---|---|
CurrentTarget |
Current Target. |
HasTarget |
Has Target. |
_attackController |
Attack Controller. |
_combatant |
Combatant. |
_debugMode |
Debug Mode. |
_decisionInterval |
Decision Interval. |
_lastDecision |
Last Decision. |
_lookOrigin |
Look Origin. |
_navigation |
Navigation. |
_onAttackFailed |
On Attack Failed. |
_onAttackTriggered |
On Attack Triggered. |
_onChaseStarted |
On Chase Started. |
_onDecisionChanged |
On Decision Changed. |
_onHoldingPosition |
On Holding Position. |
_onTargetAcquired |
On Target Acquired. |
_onTargetLost |
On Target Lost. |
_preset |
Preset. |
_profileSource |
Profile Source. |
_targetSelector |
Target Selector. |
true |
True. |