언리얼 엔진5 Basic - 캐릭터 컨트롤 설정 (Character Control Setting)

타입·2024년 4월 1일
0

언리얼 강의

목록 보기
10/47

캐릭터 컨트롤 설정

캐릭터 컨트롤 요소

  • 캐릭터 컨트롤
    • 컨트롤러: 입력자의 의지(목표 지점)을 지정할 때 사용 (ControlRotation 속성)
    • 폰: 폰의 트랜스폼을 지정
    • 카메라: 화면 구도를 설정하기 위해 사용, 주로 1인칭 시점에서 사용
    • 스프링 암: 화면 구도를 설정하기 위해 사용, 주로 3인칭 시점에서 사용
    • 캐릭터 무브먼트: 캐릭터의 이동과 회전을 조정하는 용도로 사용

Rotation에서 DesiredRotation으로 서서히 회전해야 자연스러움

  • 폰의 이동 함수
    • Look 함수: 마우스 입력으로부터 컨트롤러의 컨트롤 회전을 설정
    • Move 함수: 컨트롤러의 컨트롤 회전으로부터 Yaw 값을 참고해 이동 방향을 설정
    • 콘솔 커맨드 창으로부터 ControlRotation 값을 확인할 수 있음
      DisplayAll PlayerController ControlRotation
  • 폰의 컨트롤 옵션
    Use Controller Rotation (Yaw/Roll/Pitch)
    컨트롤러에 지정된 Control Rotation 값에 폰의 Rotation을 맞출 것인지
    이 옵션을 켜면 폰의 회전은 컨트롤러의 Control Rotation과 동기화되어 카메라가 바라보는 방향으로 폰도 바라봄
    • DesiredRotation = ControlRotation
      DesiredRotation가 ControlRotation로 동기화 되므로 폰은 일정 속도로 회전하는 것이 아니라 바로 변경
  • 스프링암의 컨트롤 옵션
    3인칭 시점 설정에 주로 사용
    • 폰의 컨트롤 회전 (컨트롤러의 Control Rotation)을 사용할 것인가?
    • 부모 컴포넌트 (주로 RootComponent)의 회전을 그대로 따를 것인가?
    • 스프링암 중간에 장애물이 있으면 앞으로 당길 것인가? (Camera라는 트레이스 채널을 사용)
  • 카메라의 컨트롤 옵션
    폰 제어 회전 사용
    1인칭 카메라 회전에 주로 사용
    • 폰의 컨트롤 회전 (컨트롤러의 Control Rotation)을 사용할 것인가?
    • 스프링암에 달려있다면 스프링암의 회전과 함께 고려
  • 캐릭터 무브먼트의 이동 옵션
    • 땅 위에 있으면 Walking, 아니면 Falling 모드
      이동 기능을 끄고 싶으면 None 모드
    • 이동 모드에서의 이동 수치: MaxWalkSpeed
    • 폴링 모드에서의 점프 수치: JumpZVelocity
  • 캐릭터 무브먼트의 회전 옵션
    • Rotation Rate: 회전 속도의 지정
    • Use Controller Desired Rotation: 캐릭터 회전을 목표 회전으로 삼고 지정한 속도로 돌리기
    • Orient Rotation To Movement: 캐릭터 이동 방향에 회전을 일치시키기
    • 폰의 회전 옵션과 충돌이 나지 않도록 주의

데이터 애셋

UDataAsset을 상속받은 언리얼 오브젝트
에디터에서 애셋 형태로 편리하게 데이터를 관리할 수 있음
캐릭터 컨트롤에 관련된 주요 옵션을 모아 애셋으로 관리

  • 데이터 애셋의 관리
    • 두 가지의 컨트롤 모드를 제공
      현재 구현된 컨트롤 모드: 3인칭 숄더뷰
      추가로 구현할 컨트롤 모드: 3인칭 쿼터뷰
      (입력키 V를 통해 컨트롤 설정을 변경)
    • ENUM을 통해 두 개의 컨트롤 데이터를 관리
  • 데이터 애셋의 구성과 적용
    • 각 섹션별로 데이터를 저장
      Pawn, CharacterMovement, Input, SpringArm
    • Pawn과 CharacterMovement 데이터는 CharacterBase에서 설정
    • Input과 SpringArm 데이터는 CharacterPlayer에서 설정
  • 뷰의 변환
    컨트롤을 변경할 때 서로 다른 입력 매핑 콘텍스트를 지정
    • 숄더뷰: ShoulderMove()와 ShoulderLook()을 사용
    • 쿼터뷰: QuaterMove()만 사용

실습코드

https://github.com/dnjfs/ArenaBattle/commit/1f58de477c469e71ff661e2735ac8b942c74b095

  • 향상된 입력 시스템을 PlayerController에 붙이는 작업
profile
주니어 언리얼 프로그래머

0개의 댓글