UE5 C++ | Warehouse Wreckage, 발사체 발사와 클래스 구조 이해 (유데미)
언리얼 강의 중 Section 2를 정리한 두번째 글입니다.
UE5 C++ | Warehouse Wreckage, 발사체 발사와 클래스 구조 이해 (유데미)
강의 정보 🎓
- 강의명: Unreal Engine 5 C++ Developer: Learn C++ & Make Video Games
- 플랫폼: 유데미
- 현재 섹션: Section 2 - Warehouse Wreckage
- 주요 내용: 발사체 발사를 위한 임펄스, 클래스, 스폰 등을 다루었다.
구현 내용 📌
Space키 입력 시 Impulse 적용 → 오브젝트가 힘을 받아 이동한다.Space키 입력 시SpawnActor<클래스>로 게임 중 오브젝트를 생성하게 된다.- 생성된 오브젝트에 Impulse를 가해 발사체를 발사하도록 구현하였다.
포스(Force) vs 임펄스(Impulse) 🌀
| 구분 | Force | Impulse |
|---|---|---|
| 작용 시간 | 일정 시간에 걸쳐 지속 | 즉각적 (한순간에 적용) |
| 공식 | F = m * a | I = m * Δv |
| 사용 노드 | Add Force | Add Impulse |
| 특이 사항 | 지속적인 가속이 필요할 때 | 빠르게 밀거나 튕기는 느낌에 적합 |
💡 Add Impulse 노드에서 Vel Change 체크 시, 질량을 무시하고 지정한 속도로 바로 적용된다.
클래스와 인스턴스 이해 🧩
클래스란?
- 데이터와 기능이 정의된 설계도이다.
- 하나의 블루프린트 클래스는 여러 오브젝트 인스턴스를 생성할 수 있다.
인스턴스란?
- 클래스를 바탕으로 생성된 실제 오브젝트이다.
- 기능은 공유하지만, 내부 데이터는 각각 다르게 설정 가능하다.
예: 총알 블루프린트 클래스로 여러 발의 총알을 생성하고, 각 총알마다 위치나 방향이 다를 수 있다.
블루프린트 클래스
액터를 재사용 가능한 스크립트형 클래스로 변환한 것으로 각 인스턴스는 게임 월드에 개별적으로 존재하며 고유한 동작과 데이터를 가질 수 있다.
[ 액터를 스크립트 작동 방식을 가질 수 있는 재사용 가능한 블루프린트 클래스로 변환 ]
오브젝트 생성: 스포닝 (Spawning) 🎯
- 게임 중에
SpawnActor<클래스>를 사용하여 오브젝트를 동적으로 생성할 수 있다. - 위치, 회전, 초기 값을 지정하여 생성 가능
실시간으로 총알 생성, 몬스터 리젠, 상호작용 오브젝트 등장 등에 사용할 수 있을 것 같다.
Pawn과 플레이어 조작 👤
Pawn이란?
- 플레이어 또는 AI가 조작할 수 있는 물리적 존재이자 모든 액터의 베이스
- UE5에서는 플레이어의 실제 몸체 역할을 한다
| 개념 | 설명 |
|---|---|
F8 키 | 실행 중 카메라 뷰에서 Pawn 뷰로 전환 |
| Player Start | Pawn의 초기 위치 지정 |
| Get Player Pawn | 현재 플레이어가 조종 중인 Pawn을 가져오는 노드 |
요약 및 느낀점 📝
- 입력을 받고 입력에 따라 발사체를 발사하는 것까지 구현하였다.
GetActorForwardVector()를 사용해도, Pawn은 카메라 회전과 함께 회전하지 않기 때문에 발사 위치가 예상과 달랐다.- 카메라 방향 기준으로 이동하려면 컨트롤러의 방향을 활용해야 한다는 점을 확인했다.
느낀점 💡 C++로도 간단히 구현할 수 있는 것들이지만 노드를 연결하는 방식으로도 동일한 동작을 만들 수 있다는 점이 인상적이다. 물론 최적화에서는 한계가 있을 수 있지만, 접근성과 직관성 면에서는 블루프린트의 강점이 뚜렷하다고 느꼈다.
다음 포스트 🧭
- 다음 포스트에서는 간단한 기본 맵을 만들고 머테리얼을 적용할 예정
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
![[ 액터를 스크립트 작동 방식을 가질 수 있는 재사용 가능한 블루프린트 클래스로 변환 ]](/assets/img/BP_Class.png)