코드를 리팩토링하고 수정하면서 어느순간 몬스터의 AI가 작동하지 않았다.
그러면서 새로 알게된 부분이,
사진처럼 'Auto Possess AI' 옵션에 따라서 또 동작하는 방식이 다르다는 부분이었다.
저번에 BP_AIController
를 만들어서 몬스터의 행동상태를 제어하도록 했었는데,
몬스터를 드래그앤드롭으로 월드에 배치하지 않고 코드상에서 스폰하도록 했더니 AI가 동작하지 않았다.
그 원인이 바로 저 부분이었다.
기본은 Place in World
인데, 드래그앤드롭으로 배치했을 때에만 자동으로 AI를 가져다 쓴다..
코드상으로 스폰했을 때도 해당되게 하려면 Spawned
옵션으로 바꾸면 된다.
결국, 뭘하던 자동으로 동작하게 하고 싶으면 마지막인 Placed in World or Spawned
를 고르면 된다.
(새삼 이런 사소한 부분까지 정해져 있구나 싶었다)
대신, 코드상으로 스폰하면 호출 순서가 꼬여서 에러가 뜨기 때문에
이처럼 Event On Possess
함수를 호출할 때 My Monster
를 저장해줘야 한다.
Move
상태일 때의 로직을 수정했다.
다음 칸에 도착했으면 바라보는 방향을 업데이트하고, 타겟과의 거리가 1칸일 경우 (= 바로 옆일 경우)
Begin Attack
을 실행한다.
대각선에 존재하는건 유효하지 않다.
x, y 좌표의 칸수 차이를 구하고, 좌우방향 우선으로 바라보는 방향을 지정한다.
플레이어의 경우 입력을 멈추면 움직임을 멈추면 됐기 때문에 Stop Move
라는 변수를 사용했지만,
몬스터의 경우 그렇지 않기 때문에 타겟(플레이어)에게 도착할 때 까지 방향을 계속 갱신해줘야 한다.