[UE5] 이득우 Part 2. 3강 캐릭터 컨트롤 설정
캐릭터 컨트롤
- 일반적으로 컨트롤러와 폰, 카메라, 스프링암, 캐릭터 무브먼트의 다섯 가지 요소를 사용해 설정
- 컨트롤러 : 입력자의 의지(목표 지점)을 지정할 때 사용. ControlRotation 속성
- 폰 : 폰의 트랜스폼을 지정
- 카메라 : 화면 구도를 설정하기 사용. 주로 1인칭 시점에서 사용
- 스프링 암 : 화면 구도를 설정하기 위해 사용. 주로 3인칭 시점에서 사용
- 캐릭터 무브먼트 : 캐릭터의 이동과 회전을 조정하는 용도로 사용
- Rotation : 현재 회전 상태
- Desired Rotation(의지) : 목표 상태
- Rotation Rate의 각속도로 회전
폰의 이동 함수
- Look 함수 : 마우스 입력으로부터 컨트롤러의 컨트롤 회전을 설정
- Move 함수 : 컨트롤러의 컨트롤 회전으로부터 Yaw 값을 참고해 이동 방향을 설정
- 콘솔 커맨트 창(단축키~)으로부터 Control Rotation 값을 확인할 수 있음
폰의 컨트롤 옵션
- Use Controller Rotation (Yaw / Roll / Pitch)
- 폰의 회전을 컨트롤러의 Control Rotation과 동기화 할 수 있음
스프링암의 컨트롤 옵션
- Use Pawn Control Rotation
- Inherit (Yaw / Roll / Pitch)
- Do Collision Test
- 스프링암 중간에 장애물이 있으면 앞으로 당겨 줌 (Camera라는 트레이스 채널을 사용)
- 폰의 컨트롤 회전 (컨트롤러의 Control Rotation)
- 부모 컴포넌트 (주로 RootComponent)의 회전
- 3인칭 시점 설정에 주로 사용
카메라의 컨트롤 옵션
- Use Pawn Control Rotation
- 폰의 컨트롤 회전 (컨트롤러의 Control Rotation) 동기화
- 스프링암에 달려있다면 스프링암의 회전과 함께 고려
- 1인칭 카메라 회전에 주로 사용
캐릭터 무브먼트의 이동 옵션
- Movement Mode : None, Walking, Falling
- 땅(Ground) 위에 있으면 Walking 모드
- 땅 위에 없으면 Falling 모드
- 이동 기능을 끄고 싶으면 None 모드
- 이동 모드에서의 이동 수치 : MaxWalkSpeed
- 폴링 모드에서의 점프 수치 : JumpZVelocity
캐릭터 무브먼트의 회전 옵션
- Rotation Rate : 회전 속도의 지정
- Use Controller Desired Rotation : 컨트롤 회전을 목표 회전으로 삼고 지정한 속도로 돌리기
- Orient Rotation To Movement : 캐릭터 이동 방향에 회전을 일치시키기
- 폰의 회전 옵션과 충돌이 나지 않도록 주의
데이터 에셋
- UDataAsset을 상속받은 UObject 클래스
- 에디터에서 에셋 형태로 편리하게 데이터를 관리할 수 있음
- 캐릭터 컨트롤에 관련된 주요 옵션을 모아 에셋으로 관리
실습
데이터 에셋 관리
- 두 가지 컨트롤 모드를 제공
- 현재 구현된 컨트롤 모드 : 3인칭 숄더뷰
- 추가로 구현할 컨트롤 모드 : 3인칭 쿼터뷰
- 입력키 V를 통해 컨트롤 설정을 변경
- ENUM을 통해 두 개의 컨트롤 데이터를 관리
데이터 에셋 구성과 적용
- 각 섹션별로 데이터를 저장
- Pawn 카테고리
- 캐릭터무브먼트 카테고리
- 입력 카테고리
- 스프링암 카테고리
- Pawn과 캐릭터무브먼트 데이터는 CharacterBase에서 설정
- 입력과 스프링암 데이터는 CharacterPlayer에서 설정
뷰의 변환
- 컨트롤을 변경할 때 서로 다른 입력 매핑 콘텍스트를 지정
- 숄더뷰 : ShoulderMove와 ShoulderLook을 사용
- 쿼터뷰 : QuaterMove만 사용
- 입력 액션을 사용해 변경