언리얼 엔진 3인칭 게임: 적 AI 플레이어 추격 시스템 (Part 11)
게시일:
작성자: 자청의 유튜브 추출기
적 AI 추격 기능 만들기
이번 영상에서는 적이 플레이어를 쫓아오는 기능을 만들어 볼 거야.
1. AI 폴더 만들고 파일 준비하기
- 새 폴더 만들기: '커스텀 콘텐츠' 폴더 안에 'AI'라는 새 폴더를 만들어.
- 블랙보드 만들기: AI 폴더 안에서 마우스 오른쪽 버튼을 누르고 '아티피셜 인텔리전스' > '블랙보드'를 선택해. 이름은
BBI
라고 지어줘.- 블랙보드: AI가 기억하고 사용할 정보(변수 같은 것)를 관리하는 곳이야.
- 비헤이비어 트리 만들기: AI 폴더 안에서 마우스 오른쪽 버튼을 누르고 '아티피셜 인텔리전스' > '비헤이비어 트리'를 선택해. 이름은
BT_Enemy
라고 지어줘.- 비헤이비어 트리: AI가 실제로 어떻게 행동할지(이동, 공격 등)를 정하는 곳이야. 블랙보드에 있는 정보를 가져와서 사용해.
2. 블랙보드에 플레이어 정보 넣기
BBI
블랙보드를 열어.- 왼쪽 위에 있는 'New Key' 버튼을 눌러.
- 'Object'를 선택하고 키 이름을
Player
라고 지어줘. - 오른쪽 'Key Type' 메뉴를 열어서 'Base Class'를
BP_PlayerCharacter_C
로 선택해.
3. 비헤이비어 트리로 플레이어 따라가기 설정하기
BT_Enemy
비헤이비어 트리를 열어.- 가장 위에 있는 'Root' 노드에서 선을 끌어내서 'Selector' 노드를 만들어.
- Selector: 여러 행동 중에 하나라도 성공하면 전체를 성공으로 판단하는 노드야.
- 'Selector' 노드에서 선을 끌어내서 'Move To' 태스크를 만들어.
- 오른쪽 디테일 패널에서 'Blackboard' 섹션을 찾아.
- 'Blackboard Key' 드롭다운 메뉴에서 아까 만든
Player
를 선택해줘.- 이제 적은
Player
라는 정보를 보고 플레이어를 따라가려고 할 거야.
- 이제 적은
4. AI 컨트롤러 만들기
- AI 폴더에서 마우스 오른쪽 버튼을 누르고 'Blueprint Class'를 선택해.
- 'All Classes'를 누르고 'AI Controller'를 검색해서 선택해. 이름은
AIC_Enemy
라고 지어줘. - 이제 적 캐릭터 블루프린트(
BP_Enemy
)를 열어. - 오른쪽 디테일 패널에서 'AI Controller Class'를
AIC_Enemy
로 바꿔줘.- 이제 이 적 캐릭터는
AIC_Enemy
컨트롤러를 통해 움직일 수 있게 돼.
- 이제 이 적 캐릭터는
5. AI 컨트롤러에 블랙보드와 비헤이비어 트리 연결하기
AIC_Enemy
블루프린트를 열어.- 'Event BeginPlay' 노드에서 선을 끌어내서 'Use Blackboard' 노드를 만들어. 'Blackboard Asset'은
BBI
로 설정해줘. - 'Use Blackboard' 노드에서 선을 끌어내서 'Run Behavior Tree' 노드를 만들어. 'BTAsset'은
BT_Enemy
로 설정해줘.- 이렇게 하면 AI 컨트롤러가 블랙보드와 비헤이비어 트리를 사용하게 돼.
6. 플레이어를 타겟으로 설정하는 이벤트 만들기
AIC_Enemy
블루프린트에서 마우스 오른쪽 버튼을 누르고 'Add Custom Event'를 선택해. 이름은SetTarget
이라고 지어줘.- 'SetTarget' 이벤트에서 선을 끌어내서 'Get Blackboard' 노드를 만들어.
- 'Get Blackboard' 노드에서 선을 끌어내서 'Set Value as Object' 노드를 만들어.
- 'Set Value as Object' 노드의 'Key Name'에 'Make Literal String' 노드를 연결하고, 문자열 값은
Player
라고 입력해줘. (오타 조심!) - 'SetTarget' 이벤트의 'Target' 핀을 'Set Value as Object' 노드의 'Value' 핀에 연결해줘.
7. 플레이어가 감지되면 타겟 설정하기
- 적 캐릭터 블루프린트(
BP_Enemy
)를 열어. - 'Viewport' 탭에서 'Add' 버튼을 누르고 'Sphere Collision'을 추가해. 이름은
TempDetector
라고 지어줘. TempDetector
의 'Sphere Radius'를 500 정도로 키워줘. (이건 적이 플레이어를 감지할 범위야.)TempDetector
를 선택한 상태에서 오른쪽 디테일 패널 맨 아래로 내려가.- 'On Component Begin Overlap' 이벤트를 찾아 클릭해줘.
- 이벤트 그래프에 'On Component Begin Overlap' 이벤트가 생겼을 거야.
- 'Other Actor' 핀에서 선을 끌어내서 'Cast To BP_PlayerCharacter_C' 노드를 만들어.
- 'Cast To BP_PlayerCharacter_C' 노드에서 선을 끌어내서 'Get AI Controller' 노드를 만들어.
- 'Get AI Controller' 노드에서 선을 끌어내서 'Cast To AIC_Enemy' 노드를 만들어.
- 'Cast To AIC_Enemy' 노드에서 선을 끌어내서 'SetTarget' 이벤트를 만들어.
- 'Cast To BP_PlayerCharacter_C' 노드의 'As BP Player Character' 핀을 'SetTarget' 이벤트의 'Player' 핀에 연결해줘.
8. 길 찾기 설정하기
- 레벨에서 'Quick Add' 버튼을 눌러.
- 'Volumes' > 'Nav Mesh Bounds Volume'을 선택해.
- 이 볼륨의 크기를 키워서 적이 돌아다닐 수 있는 모든 영역을 덮도록 해줘.
- 레벨에서 이 볼륨을 선택하고 키보드 'P'를 누르면 초록색으로 표시될 거야. 이 초록색 영역 안에서 적은 길을 찾을 수 있어.
9. 테스트하기
이제 레벨을 실행하고 플레이어를 적 근처의 TempDetector
범위 안으로 들어가게 해봐. 그러면 적이 플레이어를 쫓아올 거야!
아직 애니메이션이 없어서 좀 어색하지만, 이렇게 해서 적이 플레이어를 따라다니게 만들었어. 다음 영상에서는 적의 애니메이션을 추가해 볼게!