포스트

UE5 C++ | Warehouse Wreckage, 발사체 발사와 클래스 구조 이해 (유데미)

언리얼 강의 중 Section 2를 정리한 두번째 글입니다.

UE5 C++ | Warehouse Wreckage, 발사체 발사와 클래스 구조 이해 (유데미)

강의 정보 🎓


구현 내용 📌

  1. Space 키 입력 시 Impulse 적용 → 오브젝트가 힘을 받아 이동한다.
  2. Space 키 입력 시 SpawnActor<클래스>게임 중 오브젝트를 생성하게 된다.
  3. 생성된 오브젝트에 Impulse를 가해 발사체를 발사하도록 구현하였다.

포스(Force) vs 임펄스(Impulse) 🌀

구분ForceImpulse
작용 시간일정 시간에 걸쳐 지속즉각적 (한순간에 적용)
공식F = m * aI = m * Δv
사용 노드Add ForceAdd Impulse
특이 사항지속적인 가속이 필요할 때빠르게 밀거나 튕기는 느낌에 적합

💡 Add Impulse 노드에서 Vel Change 체크 시, 질량을 무시하고 지정한 속도로 바로 적용된다.


클래스와 인스턴스 이해 🧩

클래스란?

  • 데이터와 기능이 정의된 설계도이다.
  • 하나의 블루프린트 클래스는 여러 오브젝트 인스턴스를 생성할 수 있다.

인스턴스란?

  • 클래스를 바탕으로 생성된 실제 오브젝트이다.
  • 기능은 공유하지만, 내부 데이터는 각각 다르게 설정 가능하다.

예: 총알 블루프린트 클래스로 여러 발의 총알을 생성하고, 각 총알마다 위치나 방향이 다를 수 있다.


블루프린트 클래스

액터를 재사용 가능한 스크립트형 클래스로 변환한 것으로 각 인스턴스는 게임 월드에 개별적으로 존재하며 고유한 동작과 데이터를 가질 수 있다.

[ 액터를 스크립트 작동 방식을 가질 수 있는 재사용 가능한 블루프린트 클래스로 변환 ]

[ 액터를 스크립트 작동 방식을 가질 수 있는 재사용 가능한 블루프린트 클래스로 변환 ]


오브젝트 생성: 스포닝 (Spawning) 🎯

  • 게임 중에 SpawnActor<클래스>를 사용하여 오브젝트를 동적으로 생성할 수 있다.
  • 위치, 회전, 초기 값을 지정하여 생성 가능

실시간으로 총알 생성, 몬스터 리젠, 상호작용 오브젝트 등장 등에 사용할 수 있을 것 같다.


Pawn과 플레이어 조작 👤

Pawn이란?

  • 플레이어 또는 AI가 조작할 수 있는 물리적 존재이자 모든 액터의 베이스
  • UE5에서는 플레이어의 실제 몸체 역할을 한다
개념설명
F8실행 중 카메라 뷰에서 Pawn 뷰로 전환
Player StartPawn의 초기 위치 지정
Get Player Pawn현재 플레이어가 조종 중인 Pawn을 가져오는 노드

요약 및 느낀점 📝

  • 입력을 받고 입력에 따라 발사체를 발사하는 것까지 구현하였다.
  • GetActorForwardVector()를 사용해도, Pawn은 카메라 회전과 함께 회전하지 않기 때문에 발사 위치가 예상과 달랐다.
  • 카메라 방향 기준으로 이동하려면 컨트롤러의 방향을 활용해야 한다는 점을 확인했다.

느낀점 💡 C++로도 간단히 구현할 수 있는 것들이지만 노드를 연결하는 방식으로도 동일한 동작을 만들 수 있다는 점이 인상적이다. 물론 최적화에서는 한계가 있을 수 있지만, 접근성과 직관성 면에서는 블루프린트의 강점이 뚜렷하다고 느꼈다.

다음 포스트 🧭

  • 다음 포스트에서는 간단한 기본 맵을 만들고 머테리얼을 적용할 예정
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.