본문 바로가기

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

본 캠프 2일차 (AI를 피하는 게임 만들어보기)

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

AI를 피하는 게임 만들어보기

랜덤한 위치, 시간에 AI를 소환(Spawn)해보자.

 

파일 - 새 레벨 을 눌러 새 레벨을 만들고 이름은 Game1로 짓고, 내비메쉬바운드볼륨을 생성 후 BP_AICharacter를 배치한다.

레벨 블루프린트에서 플롯 변수 Timer를 생성하고 게임 실행 시 Timer에 6에서 10 랜덤 실수를 넣도록 구현한다.

Timer가 시간이 흐를수록 감소하고 0 미만이 되면 다시 6에서 10까지의 랜덤 실수를 넣는다.

타이머가 0이 된 후 내비시스템 안에서 랜덤한 위치에 AI를 소환하는 로직을 구현한다.

Get Navigation System 노드를 먼저 생성한 후 Get Random ~ Radius노드를 이용하여 Origin(기준점)으로부터 Radius(반경)의 랜덤 위치 값을 얻는다. 그리고 SpawnActor 노드를 이용하여 Class에 BP_AICharacter를 넣고 랜덤한 위치값을 Spawn Transform으로 연결한다.

6~10초의 타이머가 지난 후 AI가 생성된다.

하지만 소환된 AI는 가까이 가도 움직이지않는데 소환된 AI는 AI컨트롤러가 없기 때문이다.

AI 블루프린트로 가서 BeginPlay에 Spawn Default Controller를 생성한다. 폰에 기본 컨트롤러를 생성하는 노드이다.

소환된 후 두리번 거리다가 가까이가면 잘 따라온다.

스테이지

레벨 블루프린트에서 인티저 변수 Stage를 생성하고 Stage가 20초마다 1씩 증가하는 로직을 구현한다.

Get Time Seconds 노드를 인티저 노드를 사용하여 정수로 바꿔준다.(소수점을 버려서 1.1도 1, 1.9도 1이된다.)

소수점이 버려지는것을 이용하여 Seconds를 20으로 나눠서 20초마다 1이 오르도록 한다.

스테이지가 오를수록 스폰시간을 더 짧게 하여 난이도를 어렵게 한다.

스폰시간이 6~10초 사이의 시간에서 스테이지가 오를수록 0.5초씩 감소하는데 Clamp 노드를 이용하여 타이머의 최댓값 10, 최소값 1로 설정함.
시간이 지날수록 점점 빠르게 소환된다.