> For the complete documentation index, see [llms.txt](https://docs.overdare.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.overdare.com/korean/manual/studio-manual/game-development/collision-profile.md).

# Collision Profile

## 개요

**Collision Profile(콜리전 프로파일)**&#xC740; 오브젝트의 충돌 속성을 세밀하게 정의하는 시스템입니다. 각 프로파일은 오브젝트가 어떤 **Collision Channel(콜리전 채널)** 에 속하는지, 다른 채널과 어떻게 상호작용하는지를 정의합니다. 이를 통해 복잡한 충돌 규칙을 체계적으로 관리할 수 있으며, 예를 들어 플레이어는 벽과 충돌하지만 투사체는 통과하도록 설정하는 등의 다양한 게임 상황을 구현할 수 있습니다.

OVERDARE Studio의 충돌 시스템은 **Collision Channel**과 **Collision Profile**로 구성됩니다. 각각의 역할과 관계를 이해하면 더욱 효과적으로 충돌 시스템을 설계할 수 있습니다.

## Collision System 구성 요소

### Collision Channel

Collision Channel(콜리전 채널)은 오브젝트의 그룹핑 또는 Raycast 등의 쿼리 필터링을 위해서 사용 됩니다

* Object Type의 채널인 경우

  * 이전의 Collision Group과 유사한 기능을 제공합니다.
  * Collision Group과 달리 각 채널 간의 상호작용 여부는 채널 자체에서 설정하지 않습니다.
  * 채널은 단순히 오브젝트를 그룹화하는 역할만 하며, 실제 충돌 관계는 **Collision Profile**에서 정의합니다.

  <figure><img src="/files/JTSBE4cPGAtPduAEfmEp" alt=""><figcaption></figcaption></figure>
* Trace Type 의 채널인 경우

  * RaycastSingleByChannel , SpherecastSingleByChannel 과 같은 쿼리에서 인자로 사용됩니다
  * 검출 대상 오브젝트의 Collision Profile 에 대한 감지 여부를 설정할 수 있습니다.

  <figure><img src="/files/tskfl3mZCtlPbRi3UirA" alt=""><figcaption></figcaption></figure>

#### Collision Channel 제한 사항

* Collision Channel은 총 **32개**까지 생성할 수 있으며, 그중 **18개**를 크리에이터가 직접 정의하여 사용할 수 있습니다.
* Collision Channel에는 **Trace Type 채널** 또는 **Object Type 채널**을 추가할 수 있습니다. 두 타입은 32개의 채널을 공유합니다.
  * Profile은 개수 제한이 없으므로, 추가 채널 없이도 충분히 기능 확장이 가능합니다.
  * 보통은 Object Type 채널은 추가 없이 Profile만 추가해도 충분한 편입니다.

### Collision Profile

**Collision Profile**(콜리전 프로파일)은 오브젝트의 콜리전 관련 속성을 종합적으로 정의하는 구조입니다. 언리얼 엔진의 Collision Preset 개념과 유사하며, 자주 사용되는 충돌 설정을 미리 정의하여 재사용할 수 있습니다.

각 프로파일은 다음 두 가지 항목을 정의합니다:

<figure><img src="/files/rkP4SenQuFPr1MRUGX9Y" alt=""><figcaption></figcaption></figure>

1. **오브젝트 타입(Object Type / Collision Channel) :**\
   해당 프로파일을 가진 오브젝트가 속하는 콜리전 채널
2. **다른 채널과의 충돌/인터랙션 허용 상태(Collision Response)**:\
   각 콜리전 채널과의 구체적인 상호작용 방식(충돌, 오버랩만, 무시 등)

예를 들어, "이 프로파일에 해당하는 오브젝트는 'Humanoid' 채널에 속하며, 'WorldStatic' 채널과는 충돌하고, 'Projectile' 채널과는 오버랩만 되며, 'Trigger' 채널과는 상호작용하지 않는다"와 같이 정의할 수 있습니다.

#### 기본 제공 Collision Profile

OVERDARE Studio는 자주 사용되는 충돌 설정을 미리 정의한 기본 프로파일을 제공합니다:

| **프로파일명**             | **Object Type** | **주요 용도**                    |
| --------------------- | --------------- | ---------------------------- |
| **NoCollision**       | WorldStatic     | 충돌이 필요 없는 오브젝트 (예: 이펙트, 파티클) |
| **BlockAll**          | WorldStatic     | 모든 채널과 충돌하는 오브젝트             |
| **OverlapAll**        | WorldStatic     | 모든 채널과 오버랩만 되는 오브젝트          |
| **BlockAllDynamic**   | WorldDynamic    | 동적 오브젝트용 전체 충돌               |
| **OverlapAllDynamic** | WorldDynamic    | 동적 오브젝트용 전체 오버랩              |

이러한 기본 프로파일을 활용하거나, 필요에 따라 커스텀 프로파일을 생성하여 사용할 수 있습니다.

## Collision Profile 사용 방법

### Collision Profile 패널 표시

Collision Profile은 OVERDARE Studio 최상단 탭 영역에서 **Model 탭**을 선택하면 출력되는 **Collision Profile 버튼**을 클릭하여 표시할 수 있습니다.

<figure><img src="/files/LJdVh1Pyj20wVwhpNKoz" alt=""><figcaption></figcaption></figure>

### Collision Channel 생성 및 관리

#### Collision Channel 추가

Collision Profile 창에서 **Collision Channel** 섹션의 Empty Channel의 이름을 바꾸어 새로운 채널로 사용할 수 있습니다.

{% hint style="info" %}
기본적으로 제공되는 Default Channel은 이름 변경 및 삭제가 불가합니다.채널 이름은 최대 50자까지 설정할 수 있습니다.
{% endhint %}

<figure><img src="/files/AUkOx2RUuKNYSLeGB2h9" alt=""><figcaption></figcaption></figure>

#### Collision Channel 관리

채널명 위에서 마우스 더블 클릭하여 채널명을 변경할 수 있으며, **Delete**를 통해 채널을 삭제할 수 있습니다.

{% hint style="info" %}
기존에 이미 존재하는 채널명으로는 변경이 불가합니다.채널을 삭제하면 해당 채널을 사용하는 프로파일이 영향을 받을 수 있으므로 주의가 필요합니다.
{% endhint %}

#### Collision Cannel 정보 수정

**ObjectType**

해당 채널을 오브젝트 타입으로 설정합니다. 해당 오브젝트 타입의 기본 Response를 설정합니다.

별 다른 Profile이 지정되지 않으면, 해당 오브젝트 타입은 모두 기본 Responce로 작동합니다.

**TraceType**

TraceType으로 지정하는 경우, 해당 TraceChannel이 CollisionProfile과 어떻게 반응 하는지 결정합니다.

예를 들어 TraceResponce로 Pawn을 Ignore 로 지정할 경우, 해당 채널을 이용해 Raycast를 할 때, Pawn Profile을 사용하는 Part, MeshPart는 검출되지 않습니다.

{% hint style="info" %}
**주요 사용사례**

CameraChannel에서 Wall CollisionProfile을 Ignore로 설정 하면, Wall Profile로 지정된 벽이 캐릭터와 카메라 사이에 있더라도, 카메라가 캐릭터를 볼 수 있도록 벽 앞으로 이동하지 않습니다.
{% endhint %}

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhRPi87oM9ttlk5nyu7L7%2Fuploads%2Fln65WmRyxJsAO30XwBd2%2Fvideo_1280.mp4?alt=media&token=edda8dd1-71cf-43c1-9594-a7ea09806830>" %}

### Collision Profile 생성 및 관리

#### Collision Profile 추가

Collision Profile 창에서 **+ New Profile 버튼**을 클릭하여 새로운 프로파일을 생성할 수 있습니다. 생성 시 **New Profile**로 생성되며, 프로파일 이름을 변경하여 여러 프로파일을 생성하고 관리할 수 있습니다.

<figure><img src="/files/5gs24hQ6925b1q7KeSsY" alt=""><figcaption></figcaption></figure>

#### Collision Profile 설정

프로파일을 선택하면 우측 패널에서 다음 항목들을 설정할 수 있습니다:

**오브젝트 타입 설정**

**Object Type** 드롭다운 메뉴에서 해당 프로파일을 가진 오브젝트가 속할 **Collision Channel**을 선택합니다.

예를 들어, 플레이어 캐릭터용 프로파일이라면 "Player" 채널을 선택하고, 벽이나 바닥 같은 정적 오브젝트용 프로파일이라면 "WorldStatic" 채널을 선택할 수 있습니다.

**채널별 상호작용 설정**

**Collision Responses** 섹션에서 각 Collision Channel과의 구체적인 상호작용 방식을 설정할 수 있습니다.

각 채널에 대해 다음 옵션 중 하나를 선택할 수 있습니다:

| 옵션          | 설명                                             |
| ----------- | ---------------------------------------------- |
| **Block**   | 해당 채널의 오브젝트와 충돌합니다. 해당 채널이 Trace Type의 채널인 경우, |
| **Overlap** | 해당 채널의 오브젝트와 오버랩만 되며, 물리적 충돌은 발생하지 않습니다.       |
| **Ignore**  | 해당 채널의 오브젝트와 상호작용하지 않습니다.                      |

{% hint style="warning" %}
**Collision Response 우선순위**:

Collision Response는 **Ignore > Overlap > Block** 순으로 우선순위가 높습니다. 두 오브젝트가 서로 다른 Response를 가진 경우, 더 높은 우선순위의 Response가 적용됩니다.- Block vs Overlap → Overlap으로 간주됩니다.

* Block vs Ignore → Ignore로 간주됩니다.
* 두 오브젝트 모두 Block으로 설정한 경우에만 충돌이 발생합니다.
  {% endhint %}

{% hint style="info" %}
**같은 채널 간 충돌 설정**: 같은 채널(예: Pawn ↔ Pawn)에 속한 오브젝트들 간의 충돌도 프로파일별로 다르게 설정할 수 있습니다. 예를 들어, RootPart 프로파일은 다른 Pawn과 Overlap으로 설정하고, BodyPart 프로파일은 다른 Pawn과 Block으로 설정하여, RootPart는 무시하고 BodyPart만 Hit하도록 설정할 수 있습니다.
{% endhint %}

<figure><img src="/files/Vp6DBZjHxe7wSkCrJ46K" alt=""><figcaption></figcaption></figure>

#### Collision Profile 관리

프로파일명 위에서 마우스 더블클릭하여프로파일명을 변경할 수 있으며, **Delete**를 통해 프로파일을 삭제할 수 있습니다.

{% hint style="info" %}
기본제공하는 프로파일명으로는 변경이 불가합니다. 프로파일을 삭제하면 해당 프로파일을 사용하는 오브젝트가 영향을 받을 수 있으므로 주의가 필요합니다.
{% endhint %}

### 오브젝트에 Collision Profile 적용

Collision Profile을 설정할 오브젝트(Part, MeshPart 등)를 선택한 후, 프로퍼티 창에서 **Collision Profile** 속성에 프로파일 이름을 입력하여 설정할 수 있습니다.

각 오브젝트는 **하나의** Collision Profile만 가질 수 있습니다.

<figure><img src="/files/lrGYxw6gGpRQBi2Rjqvi" alt=""><figcaption></figcaption></figure>

## Collision Profile 활용 예시

### 예시 1: 플레이어와 투사체 시스템

플레이어 캐릭터는 벽과 충돌하지만, 투사체는 플레이어를 통과하고 벽에만 충돌하도록 설정할 수 있습니다.

1. **Collision Channel 생성**

* "Humanoid" 채널 생성 (또는 기본 제공 채널 사용)
* "Projectile" 채널 생성
* "WorldStatic" 채널 생성 (기본 제공, WorldStatic에서 변경됨)

2. **Collision Profile 생성**

**PlayerProfile**:

* Object Type: Humanoid
* Collision Response
  * WorldStatic: Block
  * Projectile: Overlap
  * Humanoid: Block

**ProjectileProfile**:

* Object Type: Projectile
* Collision Response
  * WorldStatic: Block
  * Humanoid: Overlap
  * Projectile: Ignore

3. **오브젝트에 프로파일 적용**

* 플레이어 캐릭터의 하위 Part들에 PlayerProfile 적용
* 투사체 오브젝트에 ProjectileProfile 적용
* 벽과 바닥 오브젝트에 WorldStatic 채널을 사용하는 프로파일 적용

### 예시 2: 트리거 영역 설정

특정 영역에 진입했을 때 이벤트를 발생시키는 트리거 영역을 만들 수 있습니다.

1. **Collision Channel 생성**

* "Trigger" 채널 생성 (또는 기본 제공 채널 사용)

2. **Collision Profile 생성**

**TriggerProfile**:

* Object Type: Trigger
* Collision Response
  * Humanoid: Overlap
  * WorldStatic: Ignore
  * Projectile: Ignore

3. **오브젝트에 프로파일 적용**

* 트리거 영역 Part에 TriggerProfile 적용
* `Touched` 이벤트를 사용하여 플레이어 진입 감지

### 예시 3: 기본 프로파일 활용

기본 제공 프로파일을 활용하여 빠르게 충돌 설정을 적용할 수 있습니다.

1. **NoCollision 프로파일**: 이펙트, 파티클 등 충돌이 필요 없는 오브젝트에 적용
2. **BlockAll 프로파일**: 모든 오브젝트와 충돌해야 하는 벽, 바닥 등에 적용
3. **OverlapAll 프로파일**: 모든 오브젝트와 오버랩만 되는 트리거 영역에 적용

필요에 따라 기본 프로파일을 복사하여 커스터마이징하거나, 새로운 프로파일을 생성할 수 있습니다.

## 기본 제공 Collision Channel

OVERDARE Studio는 게임 개발에 자주 사용되는 Collision Channel을 기본으로 제공합니다.

| **채널명**          | **설명**                                            | **용도**                     |
| ---------------- | ------------------------------------------------- | -------------------------- |
| **WorldStatic**  | <p>고정된 오브젝트<br>(Anchored, 물리 시뮬레이션 없음)</p>        | 맵에 고정된 바위, 펜스, 벽 등         |
| **WorldDynamic** | <p>동적 오브젝트<br>(!Anchored, 물리 시뮬레이션 있음)</p>        | 움직이는 플랫폼, 도어 등             |
| **PhysicsBody**  | <p>물리 시뮬레이션 오브젝트<br>(CanCollide && !Anchored)</p> | 물리적으로 시뮬레이션되고 충돌 처리되는 오브젝트 |
| **Pawn**         | 플레이어가 빙의 가능한 캐릭터                                  | 플레이어 캐릭터, NPC 등            |

## Trace Channel 활용

**Trace Channel**은 Raycast 등의 쿼리 작업에서 사용되는 채널입니다. `RaycastByChannel()` API에서 Trace Channel을 사용하면 프로파일별로 Overlap 또는 Hit 검출이 가능합니다.

### Trace Channel과 Object Type Channel의 관계

* Trace Channel과 Object Type Channel은 **32개의 채널을 공유**합니다.
* Trace Channel은 Raycast, LineTrace 등의 쿼리 작업에서 사용됩니다.
* Object Type Channel은 오브젝트의 충돌 그룹핑에 사용됩니다.
* 같은 채널을 Trace Channel과 Object Type Channel로 모두 사용할 수 있습니다.

### Trace Channel 사용 예시

특정 Trace Channel을 사용하여 Raycast를 수행하면, 해당 채널에 대한 프로파일의 Collision Response 설정에 따라 다음과 같이 검출됩니다:

* **Block**: Hit으로 검출됩니다. `RaycastResult`에서 `Hit` 속성이 `true`가 됩니다.
* **Overlap**: Overlap으로 검출됩니다. `RaycastResult`에서 `Hit` 속성이 `false`이고 `Overlap` 속성이 `true`가 됩니다.
* **Ignore**: 검출되지 않습니다.

예를 들어, "WeaponTrace"라는 Trace Channel을 생성하고, 플레이어 프로파일에서 WeaponTrace에 대해 Block으로 설정하면, 무기 Raycast 시 플레이어만 Hit으로 검출하고 다른 오브젝트는 무시할 수 있습니다.

### Collision Profile의 장점

**Collision Profile**은 **Collision Group**보다 더 세밀하고 유연한 충돌 제어를 제공합니다:

* **채널별 세밀한 제어**: 각 채널에 대해 Block, Overlap, Ignore를 개별적으로 설정할 수 있습니다.
* **프로파일 기반 예외 관리**: 예전처럼 그룹 간의 관계를 매번 정의할 필요 없이, 개별 프로파일의 독립성만으로 특정 상황(예: 투사체 관통 등)에 맞는 충돌 규칙을 효율적으로 적용할 수 있습니다
* **확장성**: 새로운 채널이나 프로파일을 추가하기 쉽고, 기존 설정에 영향을 주지 않습니다.
