내일배움캠프 사전캠프 9일차 - BehaviorTree에 따른 AI캐릭터의 구성, 캐릭터 Blueprint 생성 및 이동 설정 (Part 1)
-필기노트-
Behavior Tree : 인공지능의 구성방법 중 하나, 게임에서의 일반적인 AI 규칙
예시)
- 일반상태에서는 수색모드
- 적이 반경내로 들어오면 추적모드
- 추적모드에서 적이 가까이 오면 공격모드
Root : 트리의 시작점, 어떠한 행동을 할 것인지 결정함.
Selector : 선택하는 역할, 조건에 따라 하위Task를 행동함. 하나의 Sequence 또는 Task만 실행함.
Sequence : 진행하는 역할, 좌측부터 우측으로 진행하며, 이전 Task가 끝나면 다음 Task를 진행함
Parallel : 동시진행하는 역할, Task를 동시에 진행할 수 있음.
Task : 실제 행동을 옮기는 역할.
Decorator(BTD): Task에 실행조건을 부여함. bool값을 return해 가능여부를 판별.
- 자신을 소유한 Task가 실행되는 동안 같이 실행됨, 주로 데이터갱신에 사용됨
- Receive Activation 이벤트: 자신의 Task가 활성화 될 때 같이 실행됨.
블랙보드(BB): 트리에서의 변수 등의 정보를 저장하는 에셋. Task나 Decorator, Service 등에서 활용된다.
내비게이션: 필드 내의 장애물을 피해가는 최적의 경로를 안내해주는 시스템
- 내비게이션의 영향을 주는 영역, 모든클래스에서 가져올 수 있다.
- P키를 눌러 영향을 받는 영역을 녹색으로 표시할 수 있다.
GetRandomLocationInNavigableRadius :
- 네비게이션의 영향내의 특정위치에서부터 임의의 반경 내의 랜덤한 위치를 반환하는 노드함수.
- 네비게이션 영향내에서만 동작하며, 그렇지 않으면 False를 반환한다.
-퀘스트-
1. 개념 바로 알기
블루프린트(BluePrint)란?
- 언리얼 엔진의 비주얼 스크립팅 시스템
- 코드 없이 로직을 구성할 수 있음 (클래스 설계 가능)
- 키보드/마우스/패드 등의 입력을 게임 안의 행동(이동, 점프 등)과 연결하는 시스템
2. 직접 구현해보기
목표: 나만의 캐릭터 블루프린트를 만들고, 이동 입력 세팅을 완료합니다.
[Step 1] ThirdPerson Template으로 새 프로젝트 만들기
- 새로운 언리얼 프로젝트 생성 시, Third Person Template 선택
- 'Starter Content' 포함
[Step 2] 캐릭터 블루프린트 생성
- 'Content > ThirdPerson > Blueprints > BP_ThirdPersonCharacter' 열기
- 복제하여 'MyCharacter'로 이름 변경
[Step 3] Input 세팅 확인하기
- 'Edit > Project Settings > Input' 열기
- MoveForward, MoveRight 등 기본 입력 맵핑 확인
- 'W/S → 전후, A/D → 좌우'
- 'GameMode → MyCharacter' 로 변경
- 'Project Settings > Maps & Modes > Default Pawn Class'
[Step 5] 플레이(Play)로 테스트
- 캐릭터가 키보드 입력에 따라 이동하는지 확인
- 이동이 어색하면 위치 조정 및 충돌 범위 재확인
3. 결과 확인
해당 캐릭터는 VroidStudio에서 창작한 에셋으로 언리얼에 임포트하면서 UE5마네킹에 리타게팅되었다. IK릭과 IK리타게터를 사용하였으며, 실시간 리타게팅이기 때문에 소스가 되는 원본마네킹은 Vroid의 부모가 되어 숨김처리되었으며, Vroid의 애님 블루프린트는 'Retarget Pose from Mesh'노드에 '어태치된 부모 적용'옵션을 적용한 것을 사용해 출력하였다. 이때, 부모의 '비저빌리티 기반 애님 틱 옵션'은 'Always Tick Pose and Refresh Bones'를 사용하여 부모의 뼈 또한 실시간 업데이트하여 Vroid가 따라할 수 있게 한다.
캐릭터의 블루프린트는 Third Person 템플릿의 것을 그대로 가져왔기 때문에 내용은 그것과 동일하다.
댓글
댓글 쓰기