반응형
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
언리얼 엔진 에서 Collision (충돌) 이란 무엇이고, 어떻게 활용할 수 있는지 간략히 알아보았습니다.
질문 >
언리얼 엔진 에서 Collision (충돌) 이란 무엇이고, 어떻게 활용할 수 있나요?
답변 >
Collision (충돌)은 언리얼 엔진에서 게임 오브젝트가 서로 접촉하거나 상호작용하는 상황을 처리하는 시스템입니다. 충돌은 캐릭터가 벽에 부딪히거나, 총알이 적에게 맞는 것처럼 물리적 상호작용이나 이벤트를 트리거하는 데 사용됩니다.
Collision의 주요 구성 요소
- Collision Shapes (충돌 형상):
- 각 오브젝트에는 물리적 충돌을 감지하는 **충돌 형상(Collision Shape)**이 있습니다.
- 대표적인 형상: 박스(Box), 구(Sphere), 캡슐(Capsule), 복잡한 메시(Collision Mesh).
- Collision Responses (충돌 반응):
- 충돌 시 오브젝트의 반응을 정의합니다.
- Block: 다른 오브젝트를 차단.
- Overlap: 충돌은 발생하지 않지만 이벤트를 트리거.
- Ignore: 충돌 무시.
- Collision Presets (충돌 프리셋):
- 미리 정의된 충돌 설정으로, 간편하게 충돌 동작을 설정.
- 예: NoCollision, OverlapAll, BlockAllDynamic 등.
- Physics (물리적 상호작용):
- 물리적 시뮬레이션과 충돌을 결합하여 오브젝트가 현실적인 상호작용을 하도록 설정.
- 예: 오브젝트가 떨어지거나 충돌 시 반동.
Collision의 주요 활용 방법
1. 충돌 설정
- Static Mesh 충돌 설정:
- 콘텐츠 브라우저에서 Static Mesh를 열고, Collision 탭에서 충돌 형상을 생성하거나 수정합니다.
- 자동 생성: Add Simplified Collision을 사용해 박스, 캡슐 등 간단한 충돌을 추가.
- 사용자 정의: Complex as Simple을 설정하여 메시의 실제 형상을 충돌 형상으로 사용.
- Collision Preset 선택:
- 오브젝트의 Details 패널에서 Collision Presets를 설정.
- 예: 캐릭터는 Pawn, 벽은 BlockAll.
2. 충돌 이벤트 트리거
Overlap 이벤트를 사용하면 충돌이 발생했을 때 특정 로직을 실행할 수 있습니다.
- 예제 블루프린트:
- 충돌이 필요한 오브젝트에 Collision Component(예: Box, Sphere) 추가.
- OnComponentBeginOverlap 이벤트를 연결.
- 충돌 이벤트에 따라 로직 실행.
void AMyActor::BeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor,
UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
UE_LOG(LogTemp, Warning, TEXT("Overlap detected with %s"), *OtherActor->GetName());
}
3. 캐릭터와 충돌 상호작용
- 캐릭터는 기본적으로 Capsule Component를 사용하여 충돌을 감지.
- MoveComponent 함수가 충돌을 감지하여 움직임을 차단하거나 반응.
4. 물리적 충돌
물리 시뮬레이션을 활성화하여 충돌 시 오브젝트가 현실적으로 반응하도록 설정.
- 예제: 박스가 떨어지며 지면과 충돌.
- Static Mesh의 Simulate Physics 활성화.
- 충돌 프리셋을 BlockAll로 설정.
Collision 이벤트 종류
- BeginOverlap:
- 두 오브젝트가 충돌 형상 안으로 들어갈 때 발생.
- EndOverlap:
- 두 오브젝트가 충돌 형상 밖으로 나갈 때 발생.
- Hit:
- 두 오브젝트가 서로 막히는 충돌(Block) 상태일 때 발생.
충돌 활용 예시
- 적과 공격:
- 무기가 적의 충돌 영역과 겹칠 때 적의 체력을 감소.
- 아이템 상호작용:
- 플레이어가 아이템에 접근(Overlap)하면 획득 이벤트 발생.
- 물리적 반응:
- 캐릭터가 박스를 밀거나, 박스가 다른 오브젝트와 충돌하며 반동.
- 환경 트리거:
- 플레이어가 특정 영역에 들어가면 문이 열리거나 트랩이 작동.
충돌 설정 팁
- 복잡한 충돌 최적화:
- Static Mesh는 단순한 충돌 형상을 사용(Simple Collision)하여 성능을 향상.
- 복잡한 메시 충돌은 성능에 부정적 영향을 줄 수 있음.
- 충돌 디버깅:
- Show Collision 명령으로 충돌 형상을 시각적으로 확인.
- 정확한 충돌 처리:
- 충돌 형상이 실제 오브젝트 크기와 일치하도록 조정.
결론
Collision은 언리얼 엔진에서 물리적 상호작용, 이벤트 트리거, 환경 반응 등을 구현하는 데 핵심적인 역할을 합니다. 충돌 시스템은 충돌 형상, 충돌 반응, 물리 시뮬레이션을 통해 유연하고 강력한 상호작용을 제공합니다. 이를 적절히 활용하면 플레이어와 환경 간의 몰입감 있는 상호작용을 구현할 수 있습니다.
🎬 유튜브 채널 🎬
🎬 치지직 채널 🎬
반응형