Post

2026-04-08 TIL (32일차)

2026-04-08 TIL (32일차)

Unreal

언리얼의 GameMode = 내가 알고 있는 GameManager

  • 기능 1: “현재 플레이할 캐릭터를 세팅하고 받아온다.” -> 언리얼 GameMode: DefaultPawnClass 속성을 통해 이번 판에 유저가 조종할 몸체(캐릭터)가 무엇인지 결정하고 스폰을 관리합니다.
  • 기능 2: “플레이어의 컨트롤 방식을 설정하고 관리한다.” -> 언리얼 GameMode: PlayerControllerClass 속성을 통해 플레이어의 키보드/마우스 입력을 처리할 두뇌(컨트롤러)를 지정하고 할당해 줍니다.


• 입력 함수를 ‘눌렀을 때’와 ‘뗐을 때’로 나누는 이유

입력에서 ‘눌렀을 때(Pressed/Started)’와 ‘뗐을 때(Released/Completed)’ 함수를 따로 만드는 이유는 캐릭터의 ‘상태(State)’와 ‘액션의 지속 시간’을 제어하기 위해서입니다.

단순해 보이는 입력이라도 이 두 가지를 분리하면 게임의 조작감이 디테일해집니다.


1. 상태의 지속과 해제 (Toggle State)

가장 직관적인 이유입니다. 키를 누르고 있는 동안에만 특정 상태를 유지해야 할 때 사용합니다.

입력 상태대쉬/달리기(Sprint) 처리 로직
눌렀을 때MaxWalkSpeed를 1000으로 올리고, bIsSprinting = true로 상태를 바꿉니다.
뗐을 때MaxWalkSpeed를 다시 500으로 내리고, bIsSprinting = false로 바꿉니다.

‘눌렀을 때’ 함수만 있다면 한 번 달리기 시작한 캐릭터는 게임이 끝날 때까지 멈추지 못하고 달려야 합니다!


가변적인 점프 높이 제어 (Variable Jump Height)

슈퍼 마리오나 일반적인 플랫폼 게임을 생각해보세요. 점프 키를 짧게 누르면 낮게 뛰고, 길게 누르고 있으면 높게 뜁니다.

언리얼 점프 로직동작 방식
눌렀을 때 (Jump)캐릭터에게 위쪽으로 상승하는 속도(Z Velocity)를 강제로 부여합니다.
뗐을 때 (StopJumping)최고점에 도달하지 않았더라도, 상승하는 속도를 그 즉시 깎아버립니다. (더 이상 올라가지 않고 중력의 영향을 강하게 받아 떨어지기 시작)
  • 이 두 함수가 짝을 이뤄야 유저가 원하는 타이밍에 점프를 끊을 수 있는 조작감이 완성됩니다.


3. 차징 시스템과 액션 제어

기를 모아서 때리거나, 활을 쏘는 액션에 필수적입니다.

차징 공격 로직동작 방식
눌렀을 때bIsCharging = true로 만들고 타이머를 돌려 에너지를 모으기 시작합니다. (활시위를 당기는 애니메이션 재생)
뗐을 때모인 에너지의 양(시간)을 계산해서 그에 맞는 데미지의 화살을 발사합니다.


• MaxWalkSpeed

CharacterMovementComponent에는 MaxWalkSpeed라는 속성이 있습니다. 이 MaxWalkSpeed 값을 변경하면, 캐릭터의 최대 이동 속도가 즉시 바뀝니다.

This post is licensed under CC BY 4.0 by the author.