TIL_006 (캐릭터 움직임, 이동/점프 애니메이션)

김펭귄·2025년 8월 4일

Today What I Learned (TIL)

목록 보기
6/111

게임 구성 요소

  • 그래픽(시각적 요소): 캐릭터, 배경, UI

  • 사운드(청각적 요소): 배경 음악, 효과음

  • 인터랙션(상호 작용): 플레이어와 게임과의 상호 작용

  • 이 요소들을 게임 엔진이라는 작업대 속에서 게임을 만들 수 있다

플레이어 캐릭터 만들기

받은 입력값으로 움직임 설정

  1. 캐릭터 고정한 채로 카메라만 움직이게 설정
  • 컨트롤러의 회전값에 따라 Pawn이 회전하지 않도록 체크 해제
  1. 대신에 움직이는 방향으로 캐릭터가 회전하게끔 설정

  2. 컨트롤러 회전에 따라 spring arm 회전하게 설정

  1. 카메라 조작 상하 반전 적용

  2. 결과

    • A, D 방향키 입력 시 좌우로 이동하는 것이 아닌 회전을 함

    • 캐릭터가 카메라 기준으로 움직이는 것이 아닌, world 좌표 기준으로 움직임
      (w로 직진 이동 중에 마우스를 돌려도, 같은 방향으로 계속 이동)

    • 자동차 핸들링 느낌의 캐릭터 움직임(world 기준 움직임)


카메라 기준의 캐릭터 움직임

  • 기존의 이동의 경우 월드 를 기준으로 캐릭터의 회전을 구현하였음

  • 현재의 노드들은 컨트롤러(Get Control Rotation) 기준의 움직임을 구현


캐릭터 점프 구현

  1. Input Action BluePrints를 새로 만들어 점프키의 자료형 설정
    입력 / 미입력이 기준이므로 Bool로 설정

  2. space바와 Mapping

  3. Jump노드를 이용해 스페이스 입력 받을 시 jump하도록 설정

  4. 결과

애니메이션 블루프린트와 블렌드 스페이스

Animation Blueprints

  • 스켈레탈 메시의 애니메이션 로직과 상태 전환(State Machine), 이벤트(Event Graph) 등을 시각적으로 설계할 수 있는 시스템

  • Anime Graph에서 어떤 애니메이션을 사용할 것인지 세팅

애니메이션 에셋 종류

  • 애니메이션 시퀀스(Animation Sequence): 걷기, 뛰기, 공격 등 단일 모션이 들어있는 파일

  • 애니메이션 몽타주(Animation Montage): 여러 시퀀스를 재생 구간별로 편집, 합칠 수 있는 특수 에셋 (주로 특정 이벤트 처리에 사용, 점프 공격 같은 연결 동작)

  • 블렌드 스페이스(Blend Space): 여러 애니메이션 시퀀스를 축 값(X/Y)에 따라 자연스럽게 섞어(Blend) 재생하기 위한 에셋 (대표적으로 “걷기-뛰기”, “Idle-Run” 등)

blend space를 통한 캐릭터의 이동 애니메이션 만들기

  1. Blend Space를 통해 "Idle" - "Walk" - "Run" 애니메이션을 잘 섞어서 새로운 애니메이션 생성

  2. 캐릭터의 벡터를 받아 속력(scalar)을 구해 Speed라는 변수에 저장

  3. Speed에 저장된 값을 통해 애니메이션 작동

  4. 결과

State Machine을 이용한 애니메이션 적용

  1. IdleMove state가 존재하는 새로운 state machine을 만들어 Output Pose에 연결

  2. Idle에는 Idle 애니메이션을, Move에는 아까 Blender Space를 통해 만든 RunWalk 애니메이션을 연결

  3. Idle과 Move state의 transition은 Speed변수의 값이 0 이상인지 아닌지로 판단

  4. 결과는 위의 기존 애니메이션과 동일

Jump/Fall State Algorithm

  1. IdleMove state에서 캐릭터가 공중에 떠 있는 경우 Jump, Fall state로 이동

  2. Jump state에서는 점프 애니메이션이 끝난 경우 Fall state로 자동 이동

  3. Fall state에서 이제 공중에 있지 않은 경우 speed scalar 값에 따라 Idle이나 Move state로 이동

Jump/Fall State 구현

  1. 공중에 떠 있으면 참 값을 가지는 IsInAir 변수 초기화

  2. 공중에 떠있을 경우의 transition

  3. 점프 애니메이션 종료 후 자동 transition 설정 (transition Detail에서)

  4. 공중에 떠 있지 않은 경우 speed값에 따라 state transition (Move의 경우)

  5. 결과

profile
반갑습니다

0개의 댓글