UE5에는 충돌에 영향을 받거나 영향을 줄 수 있는 두 가지 유형의 컴포넌트가 있다.
메시는 선과 꼭짓점으로 연결된 폴리곤 망이다. 최소 3개의 꼭짓점과 선으로 구성된 2D 모양이며, 큐브와 같은 단순한 모양에서부터 수천 개의 정점을 가지는 캐릭터에 이르기까지 복잡할 수 있다.
단순한 메시로 표현되는 셰이프 오브젝트는 충돌 이벤트를 발생시키고 받는 충돌 물체로 동작하는 데 사용된다. 보이지 않는다.
Mesh 컴포넌트와 Shape Object 컴포넌트는 Primitive 컴포넌트를 상속받는다. Primitive 컴포넌트는 지오메트리 및 충돌 기능을 제공하는 모든 컴포넌트의 기반이 된다.
두 물체의 반응이 모두 Block으로 설정된 경우에만 Block이 발생한다. 두 물체에 대해 모두 OnHit
이벤트가 호출되며, 물리적으로 서로가 이동하는 경로를 막는다.
두 물체는 서로를 막지도 않고 무시하지도 않으며 서로 겹친다. 두 물체 모두에서 GenerateOverlapEvents
속성이 true
로 설정돼 있으면, 두 물체에서 OnBeginOverlap
이벤트와 OnEndOverlap
이벤트가 호출된다. 이 이벤트들은 각각 한 물체가 다른 물체와 겹치기 시작할 때와 종료할 때 호출된다. 두 물체 중 하나라도 GenerateOverlapEvents
속성이 true
로 설정돼 있지 않으면 이 이벤트들은 호출되지 않는다.
두 물체 중 하나가 다른 물체를 무시하면 두 물체는 서로 무시한다. 두 물체에 대해 아무런 이벤트도 호출되지 않으며, 두 물체는 서로가 없는 것처럼 동작하며 서로 겹친다.
물체 간 충돌에는 두 가지 측면이 있다.
OnHit
, OnBeginOverlap
, OnEndOverlap
이벤트)피직스를 기반으로 하는 물리적 반응은 한 물체가 피직스 시뮬레이션 중인 경우에만 적용된다. 예를 들어, 어떤 물체가 벽에 부딪히면 튕겨져 다른 방향으로 계속 이동한다.
쿼리를 기반으로 하는 물리적 반응은 피직스 시뮬레이션을 하고 있지 않은 모든 물체에 적용된다. 어떤 물체를 코드로 제어하는 경우에는 피직스 시뮬레이션을 사용하지 않고도 이동시킬 수 있다(SetActorLocation 함수나 Character Movement 컴포넌트 사용)
오브젝트 채널은 물체 충돌에 사용된다. 각 오브젝트 채널에 대한 '목적'을 지정하고, Block, Overlap, Ignore를 사용해 다른 오브젝트 타입에 대해 반응하는 방식을 지정할 수 있다. 개별 콜리전 채널에 대한 이 물체의 반응을 지정할 수 있는 Collision Presets
를 보자.
Collision Enabled
옵션을 통해 이 물체에서 고려한 충돌 방식을 선택할 수 있다. 피직스 콜리전은 피직스를 시뮬레이션하는 다른 물체가 이 물체를 고려하는지의 여부와 관련이 있는 반면, 쿼리 콜리전은 충돌 이벤트와 다른 물체의 움직임을 막을지 여부를 결정하는 것과 관련 돼있다.
Object Type
은 어떤 유형의 충돌 오브젝트인지를 나타낸다. UE5에서 기본 제공하는 Object Type 값은 다음과 같으며, 커스텀 오브젝트 타입도 만들 수 있다.
UE5에서 사용 가능한 콜리전 프리셋은 다음과 같다.
NoCollision
: 어떤 방식으로도 충돌에 영향을 받지 않는 물체에 사용한다Block All
: 위치가 고정돼 있고 다른 모든 물체를 막는 물체에 사용Overlap All
: 위치가 고정돼 있고 다른 물체와 겹치는 물체에 사용Block All Dynamic
: Block All 프리셋과 비슷하지만 게임플레이 중에 트랜스폼을 변경할 수 있는 움직이는 물체에 사용한다Overlap All Dynamic
: Overlap All 프리셋과 비슷하지만 게임플레이 중에 트랜스폼을 변경할 수 있는 움직이는 물체에 사용한다 Pawn
: 폰과 캐릭터에 사용한다Physics Actor
: 피직스를 시뮬레이션하는 물체에 사용한다