패스트캠퍼스 환급챌린지 49일차 : RPG 전투 플레이 프로젝트로 배우는 언리얼 엔진 5 게임 개발 강의 후기

2025. 5. 19. 21:55자기계발

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

 

 

오늘은 언리얼 엔진에서 플레이어의 원거리 화살 공격 시스템을 구현하는 작업을 진행했다. 여태까지 학습했던 데미지 전달, 공격 애니메이션과의 연동, 충돌 판정, 데미지 전달, 이펙트 등 실제 게임에서 필요한 요소들을 복습하는 시간이었다.

가장 먼저 작업한 것은 화살 투사체 액터를 생성하는 것이었다. AArrowProjectile이라는 클래스를 생성했고, ProjectileMovementComponent를 통해 속도, 중력, 방향 등을 제어할 수 있도록 설정했다. 충돌 처리를 위해서는 SphereComponent를 루트로 사용해 충돌 범위를 정하고, OnHit 이벤트를 통해 명중 시 어떤 동작이 일어날지 로직을 구현했다. 실제로는 ApplyPointDamage를 호출하여 데미지를 입히고, 동시에 충돌 지점에 이펙트를 재생하는 방식으로 자연스럽게 구성할 수 있었다. 기존에 만들어 두었던 abilitysystem을 재활용하니 훨씬 편리하게 데미지를 전달하는 작업을 진행할 수 있었다.

발사 타이밍도 중요한 포인트 중 하나였다. 그냥 공격 키를 눌러서 화살이 나가는 것이 아니라, 공격 애니메이션의 Notify 타이밍에 맞춰 정확하게 화살이 발사되도록 연동했다. 이 덕분에 애니메이션과 로직이 서로 따로 노는 느낌 없이, 타격 타이밍이 매끄럽게 연결됐다. 발사 방향은 플레이어를 향해 설정하고, 화살이 날아가는 방향은 SetVelocityInLocalSpace로 제어하여 속도감 있게 구성했다.

물론 개선할 점도 있었다. 투사체가 지형이나 다른 오브젝트와 충돌했을 때의 처리 방식, 데미지를 받는 대상이 실시간으로 바뀌는 상황에 대한 대응, 원거리 공격의 사거리 제한, 발사 전 예고 모션 등은 아직 구현하지 못했다. 이후에는 이런 부분까지 확장해보고 싶다. 강의에서도 투사체가 사라지지 않는 버그가 존재했는데 이 부분도 좀 더 깔끔하게 수정을 했으면 좋았을 것 같다.

 

 

https://abit.ly/lisbva

 

Abit.ly 다운받기

 

abit.ly