언리얼 엔진의 무브먼트 컴포넌트
- 언리얼 엔진에서는 액터를 이동시키기 위한 다양한 무브먼트 컴포넌트를 제공한다
주요 무브먼트 컴포넌트
- FloatingPawnMovement : 중력의 영향을 받지 않는 액터의 움직임을 제공
- RotatingMovement : 지정한 속도로 액터를 회전
- InterpMovement : 지정한 위치로 액터를 이동
- ProjectileMovement : 중력의 영향을 받아 포물선을 그리는 발사체의 움직임을 제공
씬 컴포넌트 vs 액터 컴포넌트
- 씬 컴포넌트 : 트랜스폼 정보(위치, 회전, 크기)가 필수적인 컴포넌트(예: 스태틱 메시 컴포넌트)
- 액터 컴포넌트 : 기능만 제공하며 트랜스폼 정보를 필요로 하지 않는 컴포넌트(예: 무브먼트 컴포넌트)
블루프린트 폰 사용
- C++이 아닌 블루프린트로 제작된 폰을 기본 폰으로 사용하려면, 블루프린트 애셋의 클래스 정보를 넘겨주면 된다. 이때, 애셋 경로에 '_C' 접미사를 붙이면 클래스 정보를 가져올 수 있다.
폰(Pawn)과 캐릭터(Character)의 차이점
- 폰은 단순히 움직이는 액터이며, 조종 기능이 추가된 액터라고 볼 수 있다. 반면, 캐릭터는 CharacterMovement 컴포넌트를 사용하여 더 다양한 움직임을 제공
폰 제작 시 고려할 요소
- 시각적 요소 : 애니메이션 기능이 필요
- 충돌 요소 : 충돌을 담당하는 캡슐 컴포넌트 사용
- 움직임 요소 : FloatingPawnMovement 또는 CharacterMovement 사용
- 네비게이션 : 길 찾기 기능을 사용하여 목적지까지 자동 이동
- 카메라 출력 : 카메라 컴포넌트를 부착하면 자동으로 플레이어 화면에 출력
주요 컴포넌트
- Capsule : 충돌을 담당하는 컴포넌트
- SkeletalMesh : 캐릭터 모델과 애니메이션 담당
- FloatingPawnMovement : 플레이어 입력을 받아 캐릭터 이동
- SpringArm : 카메라를 삼인칭 시점으로 배치하는 보조 컴포넌트
- Camera : 게임 화면을 플레이어에게 전송
입력 시스템
-
언리얼 엔진에서 입력을 처리하는 방법은 두 가지로 나뉜다
Axis Mappings : 조이스틱 레버 등의 연속적인 입력 처리
Action Mappings : 버튼 입력 처리 (눌렀을 때와 뗄 때 신호 전달)
-
폰을 조종하는 입력 로직은 일반적으로 폰 클래스에 구현한다. 그러나 입력은 플레이어 컨트롤러를 거쳐 폰으로 전달된다. 만약 컨트롤러에서 특정 입력을 처리하면, 해당 입력이 폰으로 전달되지 않을 수도 있다
캐릭터 무브먼트(CharacterMovement)의 장점
- CharacterMovement는 FloatingPawnMovement보다 더 많은 기능을 제공한다
- 중력 반영 : 점프 등의 움직임 지원
- 다양한 이동 모드 : 걷기, 기어가기, 날기, 수영 가능
- 네트워크 동기화 : 멀티플레이 환경에서 자동 동기화 지원
애니메이션 블루프린트
- 애니메이션 블루프린트는 캐릭터의 애니메이션을 조정하는 시스템으로, 다음 두 가지 요소로 구성된다
애님 인스턴스 : 캐릭터 정보를 받아 애님 그래프에 전달(C++ 또는 블루프린트로 제작 가능)
애님 그래프 : 애님 인스턴스 변수를 기반으로 애니메이션을 설계(블루프린트만 가능)
델리게이트(Delegate)
- 델리게이트는 특정 로직을 다른 객체가 대신 처리하도록 하는 개념
- C++ 자체는 델리게이트를 지원하지 않지만, 언리얼 엔진은 자체적인 델리게이트 프레임워크를 제공
애니메이션 노티파이 및 Branching Point
- 애니메이션 노티파이를 설정한 후, 해당 프레임에서 즉각적인 반응이 필요할 경우 Branching Point로 변경하는 것이 좋다
Queued (기본값) : 비동기 방식으로 실행되므로 타이밍이 정확하지 않을 수 있음 (사운드, 이펙트 등에 적합)
Branching Point : 즉시 실행되므로 정확한 타이밍이 필요한 경우 적합