본문 바로가기

3D 게임 개발이 처음이어도 언리얼 블루프린트로 쉽게 배우는 3D 게임

본 캠프 1일차 (AI 캐릭터 배치하고 실행하기)

3D 게임 개발이 처음이어도 언리얼 블루프린트로 쉽게 배우는 3D 게임 개발 강의 4-3

AI를 배치하고 실행하기

현재 비헤이비어 트리는 Move To가 실행이 끝나야 다시 처음으로 Root로 돌아가서 반복 실행이 된다.

이 때 문제점이 AI가 캐릭터 위치에 도달 해야만, 랜덤한 위치에 도달 해야만 다시 반복이 된다는 것이다.(계속 안쫓아옴)

 

이를 해결하기 위해 태스크를 새로 생성하고 함수 오버라이드 - Receive TickAI를 생성한다.

AI MoveTo 노드를 연결한다.

AI MoveTo노드의 Pawn(움직일 폰)을 Controlled Pawn(조종당하는 폰), Destination에 블랙보드의 TargetPosition 값을 넣는다.

비헤이비어 트리에서 Task를 BTT_Move로 변경한다.

AI캐릭터 블루프린트의 이벤트 그래프에서 Get AIController를 생성하고 Run BehaviorTree 노드를 연결한다.

BTAsset에는 생성한 비헤이비어 트리를 넣는다.

플레이어 컨트롤러가 연결되어 있지 않은 캐릭터들은 전부 AI 컨트롤러가 연결되어 있는것이다.(Pawn도 마찬가지)

AI캐릭터를 배치한 후 실행을 해보면 시야안에 있을 시 플레이어의 방향으로 오긴 하지만 한번 온 후 작동하지 않는다.

이는 BTT_Move에 멈추는 명령을 넣지 않아서 그렇기 때문에 Finish Execute 노드를 연결하여 Task의 완료 여부를 판단한다.

Success에 체크를 하여 Task를 완료시켜야한다.

이제 AI의 시야에 들어가면 잘 따라오지만 벗어나면 제자리에서 빙글빙글 도는데 이는 비헤이비어 트리의 서비스에서 랜덤 위치값을 넣어주는 로직을 Tick에 넣었기 때문이다.

서비스 노드에서 TickAI에 연결된 노드들을 ReceiveActivationAI으로 옮겨주면 거리가 100미만일 때 랜덤한 위치로 이동한다.