Unreal Engine 5 - Project Shooter (10): 1인칭 애니메이션 보강 (1)

mingu Lee·2025년 9월 3일

1. 간단 요약


  • Reload 애니메이션에 Anim Notify를 설정하여 장전 시 탄창이 사라졌다가 다시 생기는 기능 추가.
  • Weapon Swap 시 자연스럽게 바뀌도록 Swap 애니메이션 추가.

2. 세부 과정


  1. Reload 애니메이션 보강
  2. Swap 애니메이션 추가

2-1. Reload 애니메이션 보강


Reload 시 탄창이 계속 남아있는 것이 어색하여 사라졌다가 끼우는 모션에 다시 보이도록 설정.

탄창 Static Mesh를 Weapon에 추가.

기존 탄창은 Hide Bone by Name 노드를 사용하여 Skeletal Mesh에서 탄창 Bone을 숨김.

SMG도 똑같이 설정.

Reload Montage에 탄창을 뺄 때, 탄창을 끼울 때 2가지 Notify를 추가.

ABP에서 각 Notify에 대해 Event Dispatcher를 생성하고 연결.

이 Event를 BP_Character에서 Bind하여 Event에 따라 탄창의 Visibility를 조절.

Bind하는 Event가 너무 많아져서 BindAnimNotifies라는 함수로 묶어버림.

이때 Event 노드는 함수에서 생성할 수가 없으므로, Custom Event 대신 Create Event 노드로 대체.

아래는 Magazine Detached 함수.

Character에서 Weapon의 함수 호출Weapon에서 탄창의 Visibility 설정

Magazine Attached 함수도 동일함.

AR 장전 애니메이션SMG 장전 애니메이션

카메라 시점은 탄창이 사라지고 생기는 것을 잘 보기 위해 임시로 카메라를 뒤로 당겨놓은 상태임.

2-2. Swap 애니메이션 추가


기존 Weapon Swap은 한 순간에 휙하고 바뀌는 모션이었기에, 제대로된 애니메이션을 적용할 필요가 있음.

이전에 Retargeting 했던 애니메이션 중에 무기를 Swap하는 애니메이션이 존재하여 이를 사용함.

Main에서 Sub로 바꿀 땐 Rifle에서 SMG로 Swap하는 애니메이션, Sub에서 Main으로 바꿀 땐 SMG에서 Rifle로 Swap하는 애니메이션을 재생.

Reload와 마찬가지로 Anim Montage를 생성하여 Swap 키를 눌렀을 때 Montage가 Play 되도록 구현.

이 Swap Montage에도 무기를 집어넣은 모션, 무기를 완전히 꺼내든 모션 2가지에 Notify를 설정함.

ABP에서 각 Notify에 대해 Event Dispatcher를 생성하여 연결.

이전에 만들었던 BindAnimNotifies 함수에 이 2개의 Notify도 Bind.

기존에는 Swap 키를 누르면 바로 Weapon이 변경되었지만, 이제는 Put Complete 함수가 실행될 때 무기가 Swap 되도록 변경.

Character State Enum에 Swapping을 추가하여 무기 Swap 도중 Fire나 다른 동작이 불가능하도록 설정.

Draw Complete 함수가 실행되면 다시 Characater State를 Idle로 변경해줌.

Asset의 한계로 인해 Weapon Swap 시 어색한 부분이 조금 존재하지만 전체적으로 무기 Swap 애니메이션이 잘 작동하는 것을 볼 수 있음.

3. 구현 중 발생한 문제 및 해결방안


  • Swap 애니메이션 설정 시 Swap 도중 총알 발사가 가능한 오류 확인.
    이것저것 고려해보다가 Character State Enum에 Swapping State를 추가.
    Swap 키를 눌렀다면 Swapping State로 변경되어 총알 발사나 다른 동작이 불가능하도록 전체 로직 보완.

4. 오늘의 결과물


profile
Github: https://github.com/dlalsrn

0개의 댓글