[Unreal] Collision 채널

개요

물체의 충돌을 설정하려면 여러가지를 고려해야한다. 콜리전, 오브젝트 타입, Collision Enabled, 콜리전 프리셋 등등...

이런 개념들이 처음에 너무 헷갈렸고 그래서 막히는지 이벤트가 발생하는지 너무 헷갈렸는데 이번에 다 정리해보려고 한다.

콜리전 종류

콜리전은 충돌을 감지하는 영역이다. 해당 영역을 바탕으로 충돌에 대한 처리를 한다.

언리얼에서 설정할 수 있는 콜리전은 complex collision, simple collision, physics asset 으로 총 3가지다.

콜리전은 매쉬에 종속적이기 때문에 매쉬에 따라 설정할 수 있는 콜리전이 다르다.

  • Static Mesh: Complex Collision, Simple Collision 심을 수 있음
  • Skeletal Mesh : Physics asset 심을 수 있음

하지만 Skeletal Mesh를 가진 Actor는 보통 Simple collision으로 움직일때 충돌을 제어한다.

Complex Collision

매쉬의 모양대로 콜리전을 설정하는 것이다. 트럭 매쉬가 있고 complex collision을 사용한다고 하면 트럭모양의 콜리전이 생기는 것이라고 이해하면 된다.

보라색 선으로 매쉬의 모양대로 콜리전이 존재

Simple Collision

기본적인 사각형, 캡슐, 구형태로 사용자가 직접 영역을 편집해서 만든 콜리전이다.

스태틱 매쉬창에서 추가하거나 변경할 수 있다. 

Physics asset

skeletal mesh에 심을 수 있는 콜리전으로 레그돌을 구현할 때 사용한다는데 아직 안해봐서,,, 피격범위를 더 정확하게 판별할 때도 사용한다고 한다.

physics asset을 입힌 Skeletal 매쉬의 콜리전을 확인하면 다음과 같다.

트레이스

콜리전은 오브젝트에 충돌을 판정하는 것이고 트레이스는 레이더 감지 같은 것이라고 생각하면 된다.

선이나 도형모양의 레이저를 쏴서 충돌을 판정하는 것이라고 보면 된다.

그래서 쏘는 모양에 따라 나눌 수 있는데

  • LineTrace : 지정한 방향으로 선을 그어, 어떤 물체가 투사했는지를 확인한다.
  • Sweep :  LineTrace와 유사한데, 선이 아닌 특정 도형을 가지고 확인한다.
  • OverLap : 지정한 영역에 큰 범위의 도형을 설정해, 해당 영역과 물체가 교차했는지를 판단한다.

트레이스들을 통해 폭발범위, 마우스 피킹등을 구현할 수 있다.

콜리전 채널

콜리전과 트레이스로 부딪힐 수 있는 영역을 설정했다. 여기서 끝이 아니라 각 콜리전과 트레이스는 채널을 설정해야 한다. 채널과 채널간의 충돌 규칙을 미리 설정하고 콜리전과 트레이스에 채널을 설정해서 충돌을 판별한다고 보면 된다.

Edit > Project Setting > Egine - Collision으로 가서 설정할 수 있다.

Object Channel

오브젝트 채널은 Complex, Simple Collision 에 설정할 수 있는 채널이다.

Object Type으로 해당 Collison의 채널을 설정할 수 있다.

custom object channel을 만들때 이름과 기본적으로 다른 채널이 반응할지 지정한다.

Trace Channel

트레이스 채널은 트레이스에 설정할 수 있는 채널이다.

트레이스를 생성할 때 어떤 채널을 사용할지 선택할 수 있다.

마찬가지로 custom trace channel을 만들때 이름과 디폴트 반응을 지정한다.

Preset

콜리전에서 충돌관련 설정들을 preset으로 생성한 것이다.

상호작용

다른 채널에 대한 상호작용 설정으로는 lgnore, Overlap, Block 이 있다.

  • blocking : 해당 오브젝트를 지나갈 수 없도록, 두 채널이 모두 막음이여야 지나갈 수 없다.
  • Overlap : 물체가 서로 통과할 때, overlap 이벤트를 발생시킨다, Generate Overlap이 비활성화면 ignore와 똑같이 동작한다.
  • ignore : 아무 상호작용이 없다. 

Collision Enabled

<글 링크하기>

'Unreal' 카테고리의 다른 글

[Unreal C++] UFUNCTION  (0) 2025.01.20
[Unreal C++] Damage Framework  (0) 2025.01.12
[Unreal C++] 객체 Class 타입 비교하기  (1) 2025.01.07
[Unreal C++]Unreal 코딩 표준  (0) 2025.01.06
[Unreal] 모델링 모드로 Mesh 수정하기  (0) 2025.01.03