본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진 에서 Collision (충돌) 이란 무엇이고, 어떻게 활용할 수 있나요?

by 밝음의기둥 2024. 12. 11.
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

언리얼 엔진 에서 Collision (충돌) 이란 무엇이고, 어떻게 활용할 수 있는지 간략히 알아보았습니다.


질문 >

언리얼 엔진 에서 Collision (충돌) 이란 무엇이고, 어떻게 활용할 수 있나요?

답변 >

Collision (충돌)은 언리얼 엔진에서 게임 오브젝트가 서로 접촉하거나 상호작용하는 상황을 처리하는 시스템입니다. 충돌은 캐릭터가 벽에 부딪히거나, 총알이 적에게 맞는 것처럼 물리적 상호작용이나 이벤트를 트리거하는 데 사용됩니다.


Collision의 주요 구성 요소

  1. Collision Shapes (충돌 형상):
    • 각 오브젝트에는 물리적 충돌을 감지하는 **충돌 형상(Collision Shape)**이 있습니다.
    • 대표적인 형상: 박스(Box), 구(Sphere), 캡슐(Capsule), 복잡한 메시(Collision Mesh).
  2. Collision Responses (충돌 반응):
    • 충돌 시 오브젝트의 반응을 정의합니다.
    • Block: 다른 오브젝트를 차단.
    • Overlap: 충돌은 발생하지 않지만 이벤트를 트리거.
    • Ignore: 충돌 무시.
  3. Collision Presets (충돌 프리셋):
    • 미리 정의된 충돌 설정으로, 간편하게 충돌 동작을 설정.
    • 예: NoCollision, OverlapAll, BlockAllDynamic 등.
  4. Physics (물리적 상호작용):
    • 물리적 시뮬레이션과 충돌을 결합하여 오브젝트가 현실적인 상호작용을 하도록 설정.
    • 예: 오브젝트가 떨어지거나 충돌 시 반동.

Collision의 주요 활용 방법

1. 충돌 설정

  1. Static Mesh 충돌 설정:
    • 콘텐츠 브라우저에서 Static Mesh를 열고, Collision 탭에서 충돌 형상을 생성하거나 수정합니다.
    • 자동 생성: Add Simplified Collision을 사용해 박스, 캡슐 등 간단한 충돌을 추가.
    • 사용자 정의: Complex as Simple을 설정하여 메시의 실제 형상을 충돌 형상으로 사용.
  2. Collision Preset 선택:
    • 오브젝트의 Details 패널에서 Collision Presets를 설정.
    • 예: 캐릭터는 Pawn, 벽은 BlockAll.

2. 충돌 이벤트 트리거

Overlap 이벤트를 사용하면 충돌이 발생했을 때 특정 로직을 실행할 수 있습니다.

  • 예제 블루프린트:
    1. 충돌이 필요한 오브젝트에 Collision Component(예: Box, Sphere) 추가.
    2. OnComponentBeginOverlap 이벤트를 연결.
    3. 충돌 이벤트에 따라 로직 실행.
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. 물리적 충돌

물리 시뮬레이션을 활성화하여 충돌 시 오브젝트가 현실적으로 반응하도록 설정.

  • 예제: 박스가 떨어지며 지면과 충돌.
    1. Static Mesh의 Simulate Physics 활성화.
    2. 충돌 프리셋을 BlockAll로 설정.

Collision 이벤트 종류

  1. BeginOverlap:
    • 두 오브젝트가 충돌 형상 안으로 들어갈 때 발생.
  2. EndOverlap:
    • 두 오브젝트가 충돌 형상 밖으로 나갈 때 발생.
  3. Hit:
    • 두 오브젝트가 서로 막히는 충돌(Block) 상태일 때 발생.

충돌 활용 예시

  1. 적과 공격:
    • 무기가 적의 충돌 영역과 겹칠 때 적의 체력을 감소.
  2. 아이템 상호작용:
    • 플레이어가 아이템에 접근(Overlap)하면 획득 이벤트 발생.
  3. 물리적 반응:
    • 캐릭터가 박스를 밀거나, 박스가 다른 오브젝트와 충돌하며 반동.
  4. 환경 트리거:
    • 플레이어가 특정 영역에 들어가면 문이 열리거나 트랩이 작동.

충돌 설정 팁

  1. 복잡한 충돌 최적화:
    • Static Mesh는 단순한 충돌 형상을 사용(Simple Collision)하여 성능을 향상.
    • 복잡한 메시 충돌은 성능에 부정적 영향을 줄 수 있음.
  2. 충돌 디버깅:
    • Show Collision 명령으로 충돌 형상을 시각적으로 확인.
  3. 정확한 충돌 처리:
    • 충돌 형상이 실제 오브젝트 크기와 일치하도록 조정.

결론

Collision은 언리얼 엔진에서 물리적 상호작용, 이벤트 트리거, 환경 반응 등을 구현하는 데 핵심적인 역할을 합니다. 충돌 시스템은 충돌 형상, 충돌 반응, 물리 시뮬레이션을 통해 유연하고 강력한 상호작용을 제공합니다. 이를 적절히 활용하면 플레이어와 환경 간의 몰입감 있는 상호작용을 구현할 수 있습니다.


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형