Behavior Tree의 블랙보드 연산 비용을 절감하기 위해 C++ 기반의 FSM(Finite State Machine)을 직접 구현했습니다. 매 프레임(Tick) 거리와 현재 상태(State Enum)를 체크하여 이동과 공격을 분기 처리함으로써, 즉각적이고 명확한 상태 전이(State Transition)를 보장합니다.

//Boss1.cpp

void ABoss1::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);

    //상태 패턴(State Pattern) 구현(현재 상태가 특정 로직(Hit, PhaseChange 등)이 아닐 때만 AI 가동)
    if (BossState != EBossState::Hit && BossState != EBossState::PhaseChange)
    {
        //거리 기반 행동 결정 (Distance Check)
        float Dist = FVector::Dist(GetActorLocation(), Player->GetActorLocation());

        if (Dist > AttackRange)
        {
            //추적 상태 (Chase/Jog)
            SetBossState(EBossState::Jog);
            MoveTowardsPlayer(DeltaTime);
        }
        else
        {
            //사거리 내 진입 시 정지 및 공격 시도
            if (BossState == EBossState::Jog)
            {
                SetBossState(EBossState::Idle);
                GetCharacterMovement()->StopMovementImmediately(); //관성 제거
            }

            //공격 가능 여부 판단 후 실행
            TryAttack();
        }
    }
}