오늘의 코드카타
오늘의 공부
오늘의 CS
언리얼의 Collision Filtering
- 게임 내의 물리 객체들 사이에 어떤 충돌을 허용하고, 어떤 충돌을 무시할지를 결정하는 시스템
- 불필요한 물리 계산을 줄여 성능을 최적화하고, 복잡한 게임플레이 로직을 구현함
- 언리얼 엔진은 콜리전 시스템 자체를 활성화할지 여부를 결정하는 1차 필터링과 3가지 주요 설정(채널, 응답, 프리셋)을 사용하여 어떤 채널과 어떻게 상호작용할지 2차 필터링을 하는 구조로 되어있음
Collision Enabled
- No Collision
- 해당 컴포넌트에 대한 모든 충돌 감지 및 물리 시뮬레이션을 비활성화함
- 장식용 오브젝트나, 충돌 로직이 필요 없는 컴포넌트의 성능 최적화에 사용됨
- Query Only
- 물리 시뮬레이션은 하지 않고, 오직 쿼리 기반의 충돌 감지만 허용함
- Overlap 이벤트는 정상적으로 발생하지만, Block으로 되어있어도 무시됨
- Physics Only
- 쿼리 기반의 충돌 감지는 하지 않고, 오직 물리 시뮬레이션 기반의 충돌 처리만 허용함
- Block은 정상적으로 움직임을 차단하지만, Overlap 이벤트가 발생하지 않음
- Collision Enabled
- 쿼리 기반 감지와 물리 시뮬레이션 기반 처리를 모두 허용함
- 콜리전 응답 설정에 따라 Overlap, Block이 모두 정상적으로 작동함
1. 콜리전 채널
- 충돌을 수행하는 객체의 유형을 정의함
- 프로젝트 설정(Config -> Engine ->Collision)에서 정의함
- 기본적으로 WorldStatic, WorldDynamic, Visibility 등이 있음
2. 콜리전 응답
- 특정 채널에 속한 객체가 다른 채널의 객체와 만났을 때 어떻게 반응할지를 정의함
- 응답 종류
- Ignore(무시) : 충돌 검사를 전혀 수행하지 않습니다.
- Overlap(겹침) : 쿼리 기반의 충돌은 발생하지만, 물리적인 충돌은 발생하지 않음. 대신 Overlap 이벤트가 발생함
- Block(차단) : 쿼리 기반의 충돌을 수행하고, 물리적인 충돌이 발생함. 가장 많은 물리 계산 비용이 발생함
- 우선순위
- Block -> Ignore -> Overlap
- 예를 들어, 한 쪽이 Block, 다른 쪽이 Ignore로 설정하면 물리적 차단 발생
- 한 쪽이 Overlap, 다른 쪽이 Ignore로 설정하면 Overlap 이벤트 발생 안 함
3. 콜리전 프리셋
- 채널과 응답 설정을 묶어놓은 템플릿
- 역할 : 자주 사용하는 충돌 설정을 미리 정의해 두고, 여러 액터에 일관되게 적용할 수 있게 함