TIL: Unreal C++ CH3 개인과제 43일차

박춘팔·2026년 6월 4일

언리얼 TIL

목록 보기
42/61

누적 학습 시간 : 454시간 34분

📅 2026-06-04

오늘부터 챕터3 개인과제가 시작됐다.
여러가지의 간단한 구현과제가 포함되어있는데 나는 Pawn을 부모클래스로하는 Playable Character 구현을 먼저 시작했다.

APlayableCharacter : public APawn

과제의 의도 자체가 Charcter 클래스가 Pawn을 상속받아서 만들어지기 때문에 내부구현을 이해하라는 뜻인 것 같다.

MovementComponent가 빈약함

ACharacter는 CharacterMovementComponent가 붙어있는데 Pawn은 UFloatingPawnMovement를 만들거나 직접 이동시켜야한다.
그래서 CharacterMovementComponent가 제공해주는 다양한 변수를 직접 선언해줘야하는 문제가 있다.

  • MaxWalkSpeed
  • JumZVelocity
  • GravityScale
  • MaxStepHeight

계단오르기 없음

CharacterMovementComponent는 높이가 낮은 액터(돌맹이, 계단 등)는 자동으로 올라가도록 되어있는데
APawn + AddActorWorldOffset은 충돌시 그냥 멈춰버린다
그래서 Tick에서 직접 구현해야한다.

점프 직접 구현해야함

  • Jump()
  • StopJumping()
  • IsFalling()
    다 못써서 직접 구현해줘야한다.

바닥 판정 직접해야함

ACharacter는 CharacterMovementComponent가 바닥, 낙하, 착지, 경사면을 모두 관리해주는데
APawn은

  • IsOnGrounded()
  • LineTraceSingleChannel()
  • HitResult
  • VerticalVelocity <= 0
    등을 직접 사용해서 구현해야했다.

캐릭터 회전 직접처리

ACharacter는

  • bOrientRotationToMovement
  • UseControllerRotationYaw
  • RotationRate
    등을 사용해서 해결이 가능하지만

APawn은 마우스회전, 카메라회전, 매시 회전을 전부 직접 처리해야한다.

시점 기준 이동 시 직접 계산해야함

ACharacter는 Controller Yaw 기준으로 AddMovementInput()을 사용하면 자연스럽게 처리된다.

근데 APawn을 쓰니까

SpringArm->GetComponentRotation();
FRotationMatrix(YawOnlyRotation);

// 앞, 오른쪽 계산
AddActorWorldOffset() 사용
profile
이것 저것 다해보는 삶

0개의 댓글