🔥 장거리(Range) AI Avoid 기능
플레이어가 장거리 AI에게 가까이 다가갔을 때 플레이어의 시야에 보이지 않게 도망가는 회피 기능을 구현해보았다.

가장먼저, EQS를 이용하여 800~1200 크기의 랜덤한 Circle을 Player 중앙에 그려주고,

해당 위치에서 Player->Querier 방향과, Player->Item 방향을 내적하여 Player와 Item 사이의 각도를 구한다.
즉, AI에서 Player 방향이면 1을 반환하는 결과가 나온다.

장거리 AI가 움직이는 비헤이비어 트리에 Avoid를 추가하였다. 500 거리 안으로 들어오면 Equip을 통해 AI의 Warp 모드를 실행시키고, EQS를 통해 플레이어의 뒷방향으로 도망갈 위치를 찾는다. 이후 Action을 통해 해당 위치로 회피를 성공한다.

기존에 만들어두었던 Player의 Warp 기능을 Enemy AI도 사용할 수 있도록 조금 변형해주었다.
Enemy AI는 Player Controller를 가지지 않고, AI Controller를 갖는다. 이때 Do Action에서 사용하는 Get Cursor Location and Rotation 함수에서 Player Controller가 Is Valid인지 확인하는 단계가 있다. 이때 존재하지 않는다면 바로 False를 반환하기 때문에 이를 이용하여 Do Action 함수에서 브랜치가 False인 경우 Enemy AI로 판단하였다.
Enemy AI는 바로 Play Montage를 수행하도록 연결하였다.

Do Action에서는 공격하는 몽타주만을 실행시켜준 것이고, Begin Do Action에서 실질적인 Warp 기능을 수행한다.
Do Action과 마찬가지로 Player Controller가 Is Valid = False라면 캐릭터의 컨트롤러를 AI Controller로 형변환하여, EQ_Location을 Warp를 통해 이동할 위치로 Set Actor Location로 설정해주었다.
결과적으로 Enemy AI가 성공적으로 플레이어의 뒤로 회피한다.