UE5 C++ | Crypt Raider, 오버랩 이벤트 (유데미)
언리얼 강의 중 Section 4를 정리한 일곱번째 글입니다.
UE5 C++ | Crypt Raider, 오버랩 이벤트 (유데미)
강의 정보 🎓
- 강의명: Unreal Engine 5 C++ Developer: Learn C++ & Make Video Games
- 플랫폼: 유데미
- 현재 섹션: Section 4 - Crypt Raider
- 주요 내용: 오버랩 이벤트 처리, Trigger 컴포넌트 구현, 배열 탐색 방법(TArray & 반복문)에 대해 다루었다.
오버랩 이벤트 ⚡
- 오브젝트는 Object Type (예: WorldStatic)을 가지며, 특정 타입과 Overlap 또는 Block 설정이 가능하다.
예: WorldStatic은 Pawn과 Overlap, 나머지는 Block 처리한다.
참고 링크: Collision Filtering 공식 문서
BP_SecretWall 설정
- Dungeon_Wall을 기반으로 블루프린트 생성:
BP_SecretWall Box Collision추가 → 이름:Trigger Area- Box 크기 조절 및 Overlap 이벤트를 처리한다.
- 가고일의 콜리전 설정에서
Generate Overlap Events를 활성화해야 이벤트 발생한다.
Trigger Component를 C++로 구현
BP_SecretWall에 새 C++ 클래스 추가 →BoxComponent기반 선택UTriggerComponent를 생성한다.- 기존 트리거 에리어 삭제 후 C++ 컴포넌트를 교체한다.
Visual Studio 업데이트 하면서 생긴 문제
- 언리얼 에디터에서 컴파일시 에러가 발생하였다.
- MSVC 권장 버전 설치가 필요하였다.
v14.38를 설치 및 BuildConfiguration.xml을 **수정이 필요하다.
1 2 3 4 5 6 7
<?xml version="1.0" encoding="utf-8" ?> <Configuration xmlns="https://www.unrealengine.com/BuildConfiguration"> <WindowsPlatform> <CompilerVersion>14.38.33130</CompilerVersion> <ToolchainVersion>14.38.33130</ToolchainVersion> </WindowsPlatform> </Configuration>
참고 링크: MSVC 호환성 문제 해결
생성자 🏗️
TickComponent 사용을 원할 경우 생성자에서 명시적으로 활성화가 필요하다.
1 2 3 4 5
UTriggerComponent::UTriggerComponent() { PrimaryComponentTick.bCanEverTick = true; UE_LOG(LogTemp, Display, TEXT("Trigger Component Construct")); }
플레이를 하지 않아도 한 액터의 컴포넌트로 Trigger를 추가시키면 생성자가 호출된다는 것을 확인 할 수 있다.
TArray 📚
- 현재 컴포넌트와 Overlap 중인 액터 리스트 가져온다.
GetOverlappingActors():1 2 3 4 5
void GetOverlappingActors ( TArray < AActor * > & OverlappingActors, // 현재 오버래핑 되고있는 액터들의 배열 반환 TSubclassOf < AActor > ClassFilter // 디폴트 값이므로 현재는 신경 X ) const
0번째 인덱스 액터 이름 출력:
1 2 3 4 5 6 7 8
TArray<AActor*> Actors; GetOverlappingActors(Actors); if(Actors.Num() > 0) { FString ActorName = Actors[0]->GetActorNameOrLabel(); UE_LOG(LogTemp, Display, TEXT("Overlapping: %s"), *ActorName); }
While 및 For 반복문 🔁
모든 배열 내용을 탐색하기 위해 반복문을 사용해야 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
int32 index = 0; while(index < Actors.Num()) { FString ActorName = Actors[index]->GetActorNameOrLabel(); UE_LOG(LogTemp, Display, TEXT("Overlapping: %s"), *ActorName); ++index; } // 또는 for (int32 i = 0; i < Actors.Num(); ++i) { FString ActorName = Actors[i]->GetActorNameOrLabel(); UE_LOG(LogTemp, Display, TEXT("Overlapping: %s"), *ActorName); }
범위 기반 For 반복문 🔁
배열과 같은 형태를 순회하기 위한 for문이 있다.
1 2 3 4 5
for(AActor* Actor: Actors) { FString ActorName = Actor->GetActorNameOrLabel(); UE_LOG(LogTemp, Display, TEXT("Overlapping: %s"), *ActorName); }
요약 및 느낀점 📝
- 오버랩 이벤트에 대해 이해하고 Trigger 컴포넌트를 구현하였다.
간단하게 트리거 박스를 구현하는 방법을 배웠으니 이제는 이를 활용하여 다양한 트리거 이벤트를 만들어 낼 수 있을 것 같다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

