Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- https://mynameiskgws.tistory.com/
- https://eo-oe.tistory.com/
- 태어난김에 보스까지
- https://vetenir.tistory.com/
- 이리5조
- 스파르타코딩클럽
- https://hjmag1120.tistory.com/
- https://ji-han.tistory.com/
Archives
- Today
- Total
info8995 님의 블로그
TIL언리얼 엔진에서 Overlap 이벤트를 활용한 아이템 획득 시스템 구현 본문
TIL(Today I Learned)/Unreal Engine
TIL언리얼 엔진에서 Overlap 이벤트를 활용한 아이템 획득 시스템 구현
info8995 2025. 2. 12. 20:391️⃣ 충돌 (Collision) 이벤트 기반 아이템 획득 방식 이해하기
- 언리얼 엔진에서 아이템을 자동으로 획득하도록 하려면 콜리전(충돌) 이벤트를 활용하는 것이 일반적이다.
- 충돌 영역 (Collision Volume)
- 아이템 주변에 SphereComponent 또는 BoxComponent를 추가하여 충돌을 감지한다.
- 플레이어가 영역에 진입하면 Overlap 이벤트가 발생하고, 이를 통해 아이템 획득을 처리한다.
- Overlap 이벤트 vs. Hit 이벤트
- Overlap 이벤트: 실제 충돌 없이 겹치기만 해도 감지됨. → 아이템 획득, 트리거 존 감지 등에 사용.
- Hit 이벤트: 실제 물리 충돌이 발생할 때 실행됨. → 탄환 충돌 등의 경우에 사용.
- 아이템 획득 처리 방식
- Overlap 이벤트 발생 시 ActivateItem()을 호출하여 아이템 효과를 적용하고, DestroyItem()으로 제거할 수 있다.
2️⃣ BaseItem 클래스 구현
아이템의 기본 기능을 담당하는 부모 클래스(ABaseItem)을 작성하고, 충돌 감지 기능을 추가한다.
(1) BaseItem.h - 아이템 기본 클래스

(2) BaseItem.cpp - 아이템 기본 클래스 구현


3️⃣ ItemInterface 인터페이스 수정
아이템에 필요한 기본 기능을 제공하는 인터페이스(IItemInterface)를 정의하고, Overlap 이벤트 처리 함수의 시그니처를 수정했다.

4️⃣ 아이템 Blueprint 생성 및 Static Mesh 설정
C++ 클래스 기반 블루프린트 생성
- BigCoinItem, SmallCoinItem, MineItem, HealingItem C++ 클래스를 기반으로 블루프린트를 생성합니다.
- 언리얼 에디터에서 해당 C++ 클래스를 우클릭 → Create Blueprint Class based on… 선택 후 블루프린트 생성
Static Mesh 및 머티리얼 설정
- Components 패널에서 StaticMesh (UStaticMeshComponent) 선택
- Details 패널에서
- Static Mesh를 원하는 메시로 변경
- Material 항목에서 머티리얼 적용
5️⃣ 콜리전 범위 (Sphere Radius) 조정
- ABaseItem 클래스에서 이미 SphereComponent가 생성되어 있음
- BP 상속 후 SphereComponent를 선택하여 크기 조정
- Details 패널 → Sphere Radius 값 변경하여 적절한 크기로 조절
- 뷰포트에서 크기 즉시 확인 가능
6️⃣ 아이템 액터의 콜리전 프리셋 설정
콜리전 컴포넌트 설정 확인
- 생성한 BP (BP_BigCoin, BP_HealingItem 등) 더블 클릭
- Components 패널에서 SphereComponent(또는 BoxComponent) 선택
- Details 패널에서 Collision 섹션 확인
- 기본적으로 부모 클래스(ABaseItem)에서 OverlapAllDynamic로 설정됨
콜리전 프리셋 (Collision Preset) 종류
프리셋 이름설명사용 예시
| NoCollision | 충돌 감지 없음 | 단순 배경 오브젝트 (하늘, 장식 등) |
| BlockAll | 모든 객체와 충돌 (Overlap 이벤트 없음) | 벽, 바닥 같은 고정된 장치 |
| OverlapAll | 모든 객체와 Overlap 이벤트 발생 | 트리거 존, 감지 센서 |
| BlockAllDynamic | 움직이는 객체만 충돌 | 플레이어와 상호작용하는 문, 벽 |
| OverlapAllDynamic | 움직이는 객체와 Overlap 이벤트 발생 | 아이템, 센서 |
| Pawn | 플레이어나 AI 대상 충돌 감지 | 플레이어 전용 문, AI 전용 센서 |
| Custom | 개별 채널 설정 가능 | 특정 객체와의 충돌 커스텀 |
물리 반응 여부 (Collision Enabled)
- NoCollision → 충돌 비활성화
- Query Only → Overlap/Hit 이벤트 감지, 물리 반응 없음
- Physics Only → 물리 반응 O, 이벤트 X
- Query and Physics → 이벤트 감지 + 물리 반응 O
7️⃣ 캐릭터 태그 부여 및 콜리전 프리셋 설정
플레이어 클래스에 “Player” 태그 부여
- Details 패널에서 플레이어 캐릭터 선택
- Actor 섹션의 Tags 항목에 "Player" 추가
- C++ 코드에서 OtherActor->ActorHasTag("Player")로 플레이어 여부 판별 가능
플레이어 클래스 콜리전 채널 확인
- BP_SpartaCharacter의 Capsule Component 선택
- Details 패널 → Collision Presets가 Pawn으로 설정되어 있는지 확인
- Pawn은 OverlapAllDynamic과 호환되어 Overlap 이벤트 발생 가능
- Overlap 이벤트가 작동하지 않는다면, Project Settings > Collision에서
- Pawn 채널과 OverlapAllDynamic 채널의 상호작용 설정 확인
'TIL(Today I Learned) > Unreal Engine' 카테고리의 다른 글
| TIL: 언리얼 엔진 블루프린트로 Crouch() 구현 (0) | 2025.02.20 |
|---|---|
| 발사체 구현하기 (0) | 2025.02.17 |
| TIL: 언리얼 엔진 C++로 엘리베이터 객체 구현 (0) | 2025.02.06 |
| TIL: 언리얼 액터의 이동 및 회전 구현 (0) | 2025.02.04 |
| 29일차(언리얼 엔진에서 새로운 Actor 클래스 생성) (0) | 2025.01.27 |