UE4 - Creating an ARPG #3 - Advanced Crouching with Animations

노기현·2024년 10월 2일

Today's Lesson: Advanced Crouching with Animations

Summary

  • How to add a crouch button that makes the player crouch to half height with a different walking speed while blending into a crouch animation blendspace.
  • Fix a few issues of cycling between walk, run, sprint and crouch.

AstrumSensei


✅ Input for Crouching

In Project Settings - Input

  • 액션 매핑 추가
    - 이름: Crouch
    - 키 값: Left Control

✅ Import Crouching Animation

◼️ Mixamo 사이트 이용
//In place 옵션 True

  • Crouch Idle
  • Crouch Walk Forward
  • Crouch Walk Back
  • Crouch Walk Left
  • Crouch Walk Right

◼️ In <Animations> - 폴더 생성 <Crouch>

  • 다운 받은 Crouch Animations
    <Crouch> 폴더로 드래그 앤 드랍

✅ Crouching Blendspace 생성 → Anim Grpah에 적용

◼️ Crouching Blendspace 생성
In <Animations> - 폴더 생성 <Blendspaces>

  • 기존 <BSP_Walk>
    <Blendspaces> 폴더로 이동
  • <BSP_Walk> 복제 → <BSP_Crouch> 생성
  • In <BSP_Crouch>
    - Grid에 Crouch Animations 배치(-200~200)
    - Crouch 관련 Animation 이외의 기존 Animation 삭제

◼️ Anim Graph에 적용
In Animation Blueprint <AnimBP_Paladin> - Anim Graph

  • BSP_Crouch 추가(또는 드래그 앤 드랍)
    Speed Side, Speed Forward → BSP_Crouch
    //두 변수를 통해 Crouch Animation 결정
  • New Node: Blend Poses by Bool
    Active Value → 변수로 승격: IsCrouched
    True Pose: BSP_Crouch
    False Pose: BSP_Walk
    //bool 값에 따라 두 입력 포즈 중 하나 선택
  • New Node: Slot 'DefaultSlot'
    - Anim Montage를 사용하여 코드에서 애니메이션 재생
    - 애니메이션 블루프린트의 최종 포즈 결정 과정에서 기본 애니메이션을 설정하고, 다른 슬롯에서 오버라이드되는 애니메이션을 혼합하거나 덧붙이기 위한 기반 역할을 합니다

✅ Implementation Crouching with Blueprint Interface

◼️ Blueprint Interface 생성
In <Blueprints> - Blueprint Interface 생성 <BPInterface_CharacterAnims>

블루프린트 인터페이스

  • 이름만 있고 구현은 없는 하나 이상의 함수 모음으로,
    다른 블루프린트에 추가시킬 수 있다
  • 다른 블루프린트에 추가시킨 다음에는 고유한 방식으로 블루프린트 인터페이스의 함수를 구현해 줘야 한다
  • 이는 본질상 일반 프로그래밍의 인터페이스 개념과 비슷한데, 각기 다른 다수의 오브젝트가 모두 공통의 인터페이스를 통해 접근할 수 있게 된다
  • 간단히 말해서, 블루프린트 인터페이스를 통해 블루프린트들 서로간에 데이터를 공유하고 전송할 수 있다
  • 함수 이름: PaladinCrouching
  • Add Input: Enabled
    Type: Boolean
    //Anim Graph에서 사용한 IsCrouched와 중복되지 않도록 이름 지정

◼️ Animation Blueprint에서 Blueprint Interface 사용
In Animation Blueprint <AnimBP_Paladin>
In Class Settings

  • 인터페이스 추가: BPInterface_CharacterAnims
    //해당 인터페이스 안의 PaladingCrouching 함수를 갖게 됨

In Event Graph

  • 이벤트 추가: PaladinCrouching
  • PaladinCrouching(Enabled) → Set IsCrouched
    //PaladinCrouching 이벤트가 발생되면 해당 BP Interface안의 Enabled 값을 읽어서 IsCrouched에 반영.
    반영된 IsCrouched를 Anim Graph에서 이용하여 최종 애니메이션 포즈 결정

◼️ Character Blueprint에서 Blueprint Interface 사용
In Character Blueprint <BP_Base>
In Class Settings

  • 인터페이스 추가: BPInterface_CharacterAnims

In <Movement Graph>

  • New Variable: Crouching
    //Crouching Animation 결정에 사용할 변수
    1. Character BP의 Crouching
    2. Blueprint Interface의 Enabled
    3. Animation BP의 IsCrouched
    즉, Blueprint Interface가 Character BP, Animation BP의 매개 역할
  • New Node: Input Action Crouch
    //Crouch 액션을 입력 받으면 Crouching 변수가 Toggle처럼 작동하는 로직
  • New Node: Paladin Crouching(Message)
    //함수를 호출하는 방식으로, 인터페이스에 정의된 함수를 호출하여 메시지를 전달하는 개념
  • Mesh → Get Anim Instance
    //인터페이스 함수 구현을 위한 Mesh
  • Branch_Condition(Get Crouching)
    True → Crouch
    False → UnCrouch
    //Crouch, UnCrouch는 Character가 제공하는 함수

In CharacterMovement Component

  • 캐릭터 무브먼트(일반 세팅)
    - Crouched Half Height: 65
  • 캐릭터 무브먼트(걷기)
    - Max Walk Speed Crouch: 200
  • 내비 무브먼트
    - Can Crouch: True

◼️ New Blueprint Interface <BPInterface_CharacterActions>

  • New Function: RunOn
    New Input: Enabled
  • New Function: SprintOn
    New Input: Enabled
  • New Function: CrouchOn
    New Input: Enabled

◼️ In Character Blueprint <BP_Base>

In Class Settings

  • 인터페이스 추가: BPInterface_CharacterActions
    //RunOn, SprintOn, CrouchOn 함수 포함됨
    각각의 함수 호출로 간편하게 Animation 전환 가능

In Comment: Toggle Walk/Run

  • Collapse to Macro: Toggle Walk/Run M
  • New Node: Event RunOn

In <Toggle Walk/Run M>

  • Set Running → Branch_True → Crouch On
    Enabled: False

In Comment: Sprint

  • New Node: Branch
  • New Node: Event Sprint On
  • 스프린트 후 Crouch On
    Enabled: False

In Comment: Crouch

  • Collapse to Macro: Crouch M

  • New Node: Event CrouchOn

In <Crouch M>

  • Paladin Crouching → Branch_True → Run on
    Enabled: False

✅ Result

  • Walk/Run/Sprint/Crouch Animation
    함수 호출을 통해 구현
profile
RPG 기획자 지망생

0개의 댓글