플레이어의 직업은 선택할 수 있지만, CPU의 캐릭터는 무조건 fighter로 설정이 되는 것 같음
직업을 랜덤으로 선택되게하여 소환하고 싶어서 로직을 뜯어봄
일단 게임 인스턴스에서 들고있는 Player Characters에 저장되어있는 정보로 캐릭터를 소환하는 것 같음
그래서 해당 Array가 저장되는 곳을 찾아보니 플레이어 직업 선택 Widget에서 UpdateCPU라는 함수로 세팅되는 것 같음


위에서 Fighter로 저장되는 것을 볼 수 있음
근데 여기서 Mage로 바꿔도 계속 Fighter 캐릭터가 소환됨..
확인해보니 CPU 세개 중에 첫번째 것만 Fighter로 고정되어 나옴. 다른 두개는 잘 생성되는 것을 확인.
캐릭터를 선택하는 화면을 넘어가면 모든 지정해둔 어레이 값이 다 바뀌는데 딱 첫번째 CPU값만 고정됨.
Default값이 문제인가 싶어서 None으로 바꿔봤지만 그래도 Fighter로 나옴..;;
Set이 되는곳이 플레이어 직업 선택에서 밖에 없는 것 같은데 왜이러는지 모르겠음...
해결!!

이건 HUD_CharacterSelectTile 안의 selecter라는 함수인데, 여기서 하는 일이 캐릭터 선택창에서 선택된 캐릭터를 Player Characters 어레이에 덮어씌워지는 것임

플레이 화면을 보면 이렇게 P2 캐릭터가 Fighter를 선택하고 있는데 일단 싱글 플레이에서는 이것을 다른 값으로 선택할 수 없으므로 Fighter로 계속 들어가는 것 같음
그래서 결국은 변경시킨 값으로 제대로 들어가지 않는게 아니라 역시 다른 곳에서 set을 해주기 때문에 원하는 결과가 나오지 않았던 것이었음!
AI 캐릭터의 바로 아래 플레이어가 위치하면 위에서만 계속 서성임.
그 상태에서의 블루프린트 흐름은

일단 이 첫번째 브랜치에서 true와 false 값이 왔다갔다 함
이것은 타겟의 Y축 값이 AI의 Y축값 ±100 안에 존재하는지 확인하는 브랜치임
그리고 그 브랜치는 아래 그림으로 이어짐

일단 Y축값 안에 들어와있지 않다면 이동을 하게 만들어놨는데
Move Away Mode(서성이는 모드인듯..?)를 확인하여 Ground Move Away를 실행하여 타겟을 찾거나, 아니면 Can Flip(좌우 변환이 되는 상태인가..?) 상태를 확인해서 Ground Move를 실행하거나 Air Move를 실행하여 타겟 방향으로 AI캐릭터를 포커싱하게 만듦

그리고 위에서 Y축값 안에 들어와있고, Move Away 모드라면 이 그림으로 연결되는데,
이때,

이런 복잡한 컨디션을 확인하게됨.
간단히 정리하면, AI의 현재 상태가 어빌리티가 아니고, 공중에 있지 않으며, 공격할 수 있는 상태, 그리고 타겟의 Z축이 AI의 범위 내일때를 말함
이렇게 전체적으로 확인해보면, AI가 플레이어의 머리 위에 위치할 때 아래로 내려가거나, 아래 점프를 하는 모션이 없기 때문에 계속 서성이는 상태가 되는 것 같음
그래서 z축을 확인해서 AI가 아래점프 할 수 있게 만들었음

플레이어가 AI보다 위에 있다면 점프 이벤트를 실행하고, 아래에 있다면 플랫폼 아래로 이동하게 함


바로 뒤에 서있는데 가만히 앉아있음

이러한 상황
플레이어가 굉장히 가까이 다가가야 이 상태가 풀림
인식 범위를 넓히면 될 것 같은데, 그거보다 애초에 can flip 상태를 바꿔서 GroundMove To를 실행하는게 나은 방법일 것 같았음 (AirMoveTo 상태가 아닌데 그것을 실행하니까?)
그래서 Crouch일 때 Can flip을 False로 해주는걸 True로 바꿔서 해결함 (Crouch상태일 때도 방향전환이 되는게 나을듯)