[Part2] 2.캐릭터와 입력 시스템UE5/이득우의 언리얼 프로그래밍 공부 노트2024. 3. 28. 16:11
Table of Contents
이번 강의에서 다루는 게임 프레임웍 요소(주황)
액터와 컴포넌트
액터의 구조
- 월드에 속한 콘텐츠의 기본 단위를 액터라고 함
- 액터는 트랜스폼을 가지며, 월드로부터 틱과 시간 서비스를 제공받음
- 사실 액터는 논리적 개념일 뿐 컴포넌트를 감싸는 포장 박스에 불과함
- 실직적인 구현은 컴포넌트가 진행하고 액터는 다수의 컴포넌트를 소유하고 있음
- 다수의 컴포넌트를 대표하는 컴포넌트를 루트 컴포넌트(Root Component) 라고 함
- 액터는 루트 컴포넌트를 가져야 하며, 루트 컴포넌트의 트랜스폼은 액터의 트랜스폼을 의미함
C++ 액터에서 컴포넌트의 생성
- 컴포넌트는 언리얼 오브젝트이므로
UPROPERTY
를 설정하고TObjectPtr
로 포인터를 선언한다- 언리얼5부터 헤더에 언리얼 오브젝트를 선언할 때 일반 포인터에서
TObjectPtr
로 변경
- 언리얼5부터 헤더에 언리얼 오브젝트를 선언할 때 일반 포인터에서
- 컴포넌트의 등록
- CDO에서 생성한 컴포넌트는 자동으로 월드에 등록된다
- NewObject로 생성한 컴포넌트는 반드시 등록절차를 거쳐야 한다 ⇒ (예) RegisterComonent)
- 등록된 컴포넌트는 월드의 기능을 사용할 수 있으며, 물리와 렌더링 처리에 합류한다.
- 컴포넌트의 확장 설계
- 에디터 편집 및 블루프린트로의 승계를 위한 설정
UPROPERTY
에 지정자(Specifier)를 설정할 수 있다.
- 컴포넌트 지정자
Visible / Edit
: 크게 객체타입과 값타입으로 사용Anywhere / DefaultsOnly / InstanceOnly
: 에디터에서 편집 가능 영역BlueprintReadonly / BlueprintReadWrite
: 블루프린트로 확장 시 읽기 혹은 읽기쓰기 권한을 부여Category
: 에디터 편집 영역(Detail)에서의 카테고리 지정
캐릭터의 제작
폰의 기능과 설계
- 폰은 액터를 상속받은 특별한 액터이며, 플레이어가 빙의해 입출력을 처리하도록 설계돼있음
- 폰은 길찾기를 사용할 수 있으며, 일반적으로 세 가지 주요 컴포넌트로 구성된다.
- 기믹과 상효작용을 담당하는 충돌 컴포넌트 (루트컴포넌트)
- 시각적인 비주얼을 담당하는 메시 컴포넌트
- 움직임을 담당하는 컴포넌트
- 컴포넌트 중에서 트랜스폼이 없이 기능만 제공하는 컴포넌트를 액터컴포넌트라고 한다.
- 트랜스폼이 있으면 씬컴포넌트라고 함
- 트랜스폼이 있으면 씬컴포넌트라고 함
캐릭터의 기본 구조
- 캐릭터는 인간형 폰을 구성하도록 언리얼이 제공하는 전문 폰 클래스를 의미한다.
- 캐릭터는 세 가지 주요 컴포넌트로 구성되어 있다.
- 기믹과 상호작용을 담당하는 캡슐 컴포넌트 (루트 컴포넌트)
- 애니메이션 캐릭터를 표현하는 스켈레탈 메시 컴포넌트
- 캐릭터의 움직임을 담당하는 캐릭터 무브먼트(CharacterMovement) 컴포넌트
입력 시스템 개요
입력 시스템의 동작 방식
- 플레이어의 입력은 컨트롤러를 통해 폰으로 전달됨
- 입력을 컨트롤러가 처리할 수도, 폰이 처리할 수도 있는데, 일반적으로는 폰이 처리하도록 설정
- 예) GTA같은 다양한 사물(자동차, 비행기, 사람)에 빙의하는 게임의 경우 폰이 유리
🔗언리얼 엔진 입력 개요(언리얼 공식 문서)
- 예) GTA같은 다양한 사물(자동차, 비행기, 사람)에 빙의하는 게임의 경우 폰이 유리
향상된 입력 시스템
- 기존 입력 시스템을 대체하고 언리얼 5.1부터 새롭게 도입
- 사용자의 입력 설정 변경에 유연하게 대처할 수 있도록 구조를 재수립
- 사용자 입력 처리를 네 단계로 세분화하고 각 설정을 독립적인 에셋으로 대체
향상된 입력시스템 동작 구성
- 사용자의 입력 데이터를 최종 함수에 매핑하는 과정을 체계적으로 구성
- 플랫폼에 따른 다양한 입력 장치의 설정
- 예) 게임패드용 입력 매핑 컨텍스트, 키보드용 입력 매핑 컨텍스트
- 입력 값의 변경
- 예) AD/WS 입력값을 Y축과 X축으로 변경, 값 반전의 처리
- 이벤트 발생 조건의 상세 설정
- 예) 일반 버튼인가? 축 이동인가? 일정 이상 눌러야 하는가?
- 예) 일반 버튼인가? 축 이동인가? 일정 이상 눌러야 하는가?
'UE5 > 이득우의 언리얼 프로그래밍 공부 노트' 카테고리의 다른 글
[Part2] 4.캐릭터 애니메이션 설정 (0) | 2024.04.07 |
---|---|
[Part2] 3.캐릭터 컨트롤 설정 (0) | 2024.03.30 |
[Part2] 1.언리얼 엔진 게임 제작 기초 (1) | 2024.03.24 |
[Part1] 15.언리얼 빌드 시스템 (0) | 2024.03.15 |
[Part1] 14.언리얼 오브젝트 관리 2 - 패키지 (1) | 2024.03.13 |