> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-ko/sdk7/3d/colliders.md).

# 충돌체

엔티티에 3D 형태와 충돌을 부여하는 다양한 컴포넌트에 대해 알아보세요.

콜라이더가 있는 엔티티는 공간을 차지하고 플레이어의 경로를 막으며, 콜라이더가 없는 엔티티는 플레이어의 아바타가 통과할 수 있습니다.

엔티티를 클릭 가능하게 만들기 위해서도 콜라이더가 필요합니다. 버튼 이벤트는 엔티티의 보이는 형태가 아니라 콜라이더 형태를 기준으로 합니다.

플레이어의 물리와 상호작용하는 것과 포인터 이벤트와 상호작용하는 것은 별도의 충돌 레이어가 있으며, 콜라이더는 둘 중 하나와만 상호작용하도록 설정할 수 있습니다. 또한 사용자 정의 레이어와 상호작용하도록 설정할 수도 있으며, 이는 다음과 함께 사용할 수 있습니다 [레이캐스트](/creator/content-creator-ko/sdk7/3d/colliders.md) 장면에 맞는 방식으로 처리할 수 있습니다.

{% hint style="warning" %}
**📔 참고**: 콜라이더는 다른 엔티티들이 서로 상호작용하는 방식에는 영향을 주지 않으며, 엔티티는 항상 겹칠 수 있습니다. 충돌 설정은 엔티티가 플레이어의 아바타 및 버튼 이벤트와 상호작용하는 방식에만 영향을 줍니다. Decentraland에는 기본 물리 엔진이 없으므로, 엔티티가 떨어지거나, 부딪히거나, 튀어 오르게 하려면 이 동작을 장면에 직접 코딩하거나 이를 처리하는 라이브러리를 가져와야 합니다.
{% endhint %}

## 씬 편집기 사용

엔티티의 콜라이더를 관리하는 가장 쉬운 방법은 [씬 편집기](/creator/content-creator-ko/scene-editor/get-started/about-editor.md).

다음을 추가할 수 있습니다 **메시 콜라이더** 컴포넌트를 엔티티에 추가하여 엔티티에 기본 도형(큐브, 평면, 구, 원기둥 또는 원뿔)을 할당할 수 있습니다. 그런 다음 [충돌 레이어](#collision-layers) 드롭다운에서 선택할 수 있습니다.

또한 다음의 충돌 레이어를 구성할 수도 있습니다. **GLTF** 기본값을 변경하는 컴포넌트에서 [충돌 레이어](#collision-layers) 모델의 콜라이더 지오메트리 또는 보이는 지오메트리 중 하나에 사용됩니다. 다음을 참조하세요 [컴포넌트 추가](/creator/content-creator-ko/scene-editor/build/components.md#add-components).

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-a1566c33728b1ef858f518365390d2ce5c97fe82%2Fgltf-component.png?alt=media)

## 기본 도형의 콜라이더

이 `MeshCollider` 컴포넌트는 엔티티에 기본 도형(박스, 구, 평면, 원기둥 또는 원뿔)을 기반으로 한 단순 콜라이더를 부여합니다.

다음을 가진 엔티티는 `MeshRenderer` 컴포넌트를 통해 다음을 갖게 되지만 [기본 도형](/creator/content-creator-ko/sdk7/3d/shape-components.md#primitive-shapes) 기본적으로 콜라이더가 없습니다. 엔티티에 또한 `MeshCollider` 컴포넌트를 부여해야 합니다.

다음 콜라이더 형태를 사용할 수 있습니다 `MeshCollider`. 몇몇 형태에는 해당 형태에 특화된 추가 선택 필드가 포함됩니다.

* **박스**:

  사용: `MeshCollider.setBox()`, 엔티티를 전달합니다.
* **평면**:

  사용: `MeshCollider.setPlane()`, 엔티티를 전달합니다.
* **구**:

  사용: `MeshCollider.setSphere()`, 엔티티를 전달합니다.
* **원기둥**:

  사용: `MeshCollider.setCylinder()`, 엔티티를 전달합니다. 다음을 전달하세요 `radiusTop` 및 `radiusBottom` 를 추가 선택 필드로 사용해 원기둥을 수정할 수 있습니다.

{% hint style="info" %}
**💡 팁**: 둘 중 하나를 설정하세요 `radiusTop` 또는 `radiusBottom` 를 0으로 설정하면 원뿔이 됩니다.
{% endhint %}

이 예제는 통과할 수 없는 박스 엔티티를 정의합니다.

```ts
// 엔티티 생성
const myCollider = engine.addEntity()

// 보이는 형태
MeshRenderer.setBox(myCollider)

// 콜라이더
MeshCollider.setBox(myCollider)
```

다음에서 사용되는 형태는 `MeshCollider` 에서 사용되는 것과 반드시 일치할 필요는 없습니다. `MeshRenderer`다음을 추가할 수도 있습니다. `MeshCollider` 다음의 3D 모델이 있는 엔티티에 `GltfContainer` 컴포넌트가 있는 경우, 또는 아예 보이는 형태가 없는 엔티티에.

{% hint style="warning" %}
**📔 참고**:  `MeshCollider` 컴포넌트와 `ColliderLayer` 는 다음을 통해 가져와야 합니다

`import { MeshCollider, ColliderLayer } from "@dcl/sdk/ecs"`

참고 [가져오기](/creator/content-creator-ko/sdk7/getting-started/coding-scenes.md#imports) 를 사용하면 이를 쉽게 처리할 수 있습니다.
{% endhint %}

## 3D 모델의 콜라이더

3D 모델에는 서로 다른 두 지오메트리 수준에서 콜라이더를 할당할 수 있습니다:

* `visibleMeshesCollisionMask`: 모델의 보이는 지오메트리를 가리킵니다. 기본적으로 이 지오메트리에는 콜라이더가 없습니다.
* `invisibleMeshesCollisionMask`: 이름이 다음으로 끝나는 콜라이더 메시를 가리킵니다 `_collider`. 기본적으로 이 지오메트리는 물리와 포인터 이벤트 둘 다에 대한 콜라이더로 처리됩니다.

3D 모델의 일부로 포함된 메시 중 이름이 다음으로 끝나는 것은 `_collider` 의 일부로 처리되며 `invisibleMeshesCollisionMask` 레이어의 일부로 간주되고 기본적으로 콜라이더로 해석됩니다.

콜라이더 지오메트리를 별도의 보이지 않는 레이어로 정의하면 훨씬 더 세밀하게 제어할 수 있고, 보이는 지오메트리를 사용하는 것보다 시스템 부담이 훨씬 적습니다. 충돌 객체는 일반적으로 원본 모델보다 훨씬 단순하기 때문입니다(버텍스 수가 적음).

모델에 콜라이더 지오메트리가 없고 이를 물리나 포인터 이벤트 시스템에 영향을 주게 하려면, 다음 중 하나를 할 수 있습니다:

* 다음을 통해 보이는 지오메트리에 충돌 레이어를 직접 할당하세요 `visibleMeshesCollisionMask`.

{% hint style="warning" %}
**📔 참고**: 객체의 보이는 지오메트리에 버텍스가 많다면, 성능 비용이 더 커질 수 있다는 점에 유의하세요.
{% endhint %}

* 엔티티에 다음을 부여하세요 `MeshCollider` 컴포넌트를 통해 기본 도형 콜라이더를 부여합니다.
* 다음을 가진 보이지 않는 엔티티를 겹쳐 놓으세요 `MeshCollider` 컴포넌트를 부여해야 합니다.
* Blender 같은 외부 도구에서 모델을 편집하여 다음을 포함시키세요 *콜라이더 메시*. 콜라이더의 이름은 다음이어야 합니다 *x\_collider*, 여기서 *x* 는 모델의 이름입니다. 따라서 이름이 다음인 모델이라면 *house*, 콜라이더 이름은 다음이어야 합니다 *house\_collider*.

포인터 이벤트 충돌 레이어를 다음에 할당하는 것도 좋습니다 `visibleMeshesCollisionMask` 호버 힌트와 포인터 이벤트가 엔티티의 윤곽에 더 정확하게 반응하도록 하고 싶을 경우를 대비해서입니다. 이는 성능 요구가 더 높다는 점에 유의하세요.

{% hint style="warning" %}
**📔 참고**: 동일한 레이어(물리, 포인터 이벤트 또는 사용자 정의 레이어)가 양쪽 모두에 할당되어 있지 않은지 확인하세요 `visibleMeshesCollisionMask` 및 `invisibleMeshesCollisionMask`, 그렇게 하면 리소스를 매우 비효율적으로 사용하게 됩니다. 예를 들어 보이지 않는 레이어에는 물리를, 보이는 레이어에는 포인터 이벤트를 두는 식으로 각각 다른 레이어를 사용할 수 있습니다.
{% endhint %}

```ts
// 엔티티 생성
const myEntity = engine.addEntity()

// GLTF 형태 할당
GltfContainer.create(myEntity, {
	src: '/models/myModel.gltf',
	invisibleMeshesCollisionMask: ColliderLayer.CL_PHYSICS,
	visibleMeshesCollisionMask: ColliderLayer.CL_POINTER,
})
```

참고 [3D 모델](https://github.com/decentraland/docs-creator/blob/main/creator/3d-modeling/3d-models/README.md) 에 콜라이더용 보이지 않는 지오메트리를 추가하는 방법에 대한 자세한 내용입니다.

{% hint style="warning" %}
**📔 참고**:  `GltfContainer` 컴포넌트와 `ColliderLayer` 는 다음을 통해 가져와야 합니다

> `import { GltfContainer, ColliderLayer } from "@dcl/sdk/ecs"`

참고 [가져오기](/creator/content-creator-ko/sdk7/getting-started/coding-scenes.md#imports) 를 사용하면 이를 쉽게 처리할 수 있습니다.
{% endhint %}

### 애니메이션 모델

애니메이션을 포함하는 모델에서 보이는 지오메트리를 사용하도록 콜라이더를 설정할 때 [아마추어 기반 애니메이션](/creator/content-creator-ko/3d/animations.md), 애니메이션을 콜라이더가 따라가지 않습니다. 콜라이더 메시들은 원래 형태를 유지합니다. 애니메이션이 메시의 지오메트리를 변형하는 경우에도, 애니메이션이 재생되는 동안 콜라이더 메시들은 애니메이션 적용 전의 형태를 유지합니다.

형태를 바꾸지 않고 전체 메시를 이동시키는 애니메이션을 재생할 때는, 이러한 변화가 콜라이더에 정확히 반영됩니다. 예를 들어 플랫폼이 애니메이션의 일부로 움직이면, 플랫폼의 콜라이더도 애니메이션에 따라 함께 움직입니다.

## 충돌 레이어

씬은 서로 다른 동작을 가진 별도의 충돌 레이어를 처리할 수 있습니다.

다음을 구성할 수 있습니다 `MeshCollider` 컴포넌트 또는 `GltfContainer` 컴포넌트가 한 종류의 상호작용에만, 여러 상호작용에, 또는 아무것에도 반응하지 않도록 설정할 수 있습니다. 이를 위해 다음에서 `MeshCollider` 를 설정하세요 `collisionMask` 속성을, 그리고 다음에서 `GltfContainer` 를 설정하세요 `visibleMeshesCollisionMask` 또는 `invisibleMeshesCollisionMask` 속성을 다음 값 하나 또는 여러 개로 설정하세요:

* `ColliderLayer.CL_PHYSICS`: 플레이어의 이동을 막습니다(씬의 벽, 바닥, 플랫폼). 포인터 이벤트에는 영향을 주지 않습니다.
* `ColliderLayer.CL_POINTER`: 포인터 이벤트에만 반응합니다. 플레이어의 이동은 막지 않습니다.
* `ColliderLayer.CL_PLAYER`: 콜라이더를 아바타 마커로 표시합니다. 다음을 대상으로 하는 레이캐스트와 트리거 영역은 `CL_PLAYER` 이를 감지하지만, 플레이어 캡슐은 그대로 통과합니다(물리적 차단 없음). 씬 메시에서는 메시를 감지만을 위한 "아바타 같은 대상"으로 표시하는 데 유용합니다.
* `ColliderLayer.CL_MAIN_PLAYER`: 다음과 같지만 `CL_PLAYER`로컬 플레이어만 대상으로 합니다. 다음이 포함된 레이캐스트와 트리거 영역은 `CL_MAIN_PLAYER` 마스크에 포함되어 있으면 이를 감지하지만, 원격 아바타용 레이캐스트/트리거는 그렇지 않습니다.
* `ColliderLayer.CL_CUSTOM1` 부터 `CL_CUSTOM8`: 레이캐스트 및 트리거 영역과 함께 사용하여 특정 사용자 정의 레이어와의 충돌만 감지할 수 있습니다.
* `ColliderLayer.CL_NONE`: 어떤 종류의 충돌에도 반응하지 않습니다.

{% hint style="info" %}
**💡 팁**: `CL_PLAYER` 및 `CL_MAIN_PLAYER` 다음에서 `MeshCollider` / `GltfContainer` 다음과 같습니다 **감지 전용** 레이어 — 플레이어 캡슐은 이를 통과합니다. 메시를 아바타로도 감지 가능하게 하면서 동시에 플레이어를 물리적으로 막고 싶다면, 아바타 레이어와 다음을 결합하세요 `CL_PHYSICS` (예: `CL_PHYSICS | CL_MAIN_PLAYER`).
{% endhint %}

{% hint style="warning" %}
**📔 참고**충돌을 비활성화하려면 다음의 `MeshCollider` 컴포넌트, 컴포넌트를 삭제하세요. 충돌 레이어를 다음으로 설정하지 마세요 `ColliderLayer.CL_NONE`. 다음과 관련된 알려진 문제가 있습니다 `MeshCollider` 컴포넌트입니다. 모든 충돌을 비활성화하는 대신, 이 값은 기본값과 동일하게 만듭니다(`ColliderLayer.CL_PHYSICS | ColliderLayer.CL_POINTER`).
{% endhint %}

```ts
// 엔티티 생성
const myEntity = engine.addEntity()
// 보이는 형태
MeshRenderer.setBox(myEntity)

// 플레이어 물리에만 반응하는 MeshCollider 컴포넌트 생성
MeshCollider.setBox(myEntity, ColliderLayer.CL_PHYSICS)
```

하나의 충돌 마스크는 여러 충돌 레이어에 반응할 수 있습니다. 다음을 사용하세요 `|` 문자를 *또는*, 필요한 만큼의 레이어를 포함할 수 있습니다. MeshCollider의 기본값은 `ColliderLayer.CL_PHYSICS | ColliderLayer.CL_POINTER`.

```ts
MeshCollider.setBox(
	myEntity,
	ColliderLayer.CL_CUSTOM1 |
		ColliderLayer.CL_CUSTOM3 |
		ColliderLayer.CL_PHYSICS |
		ColliderLayer.CL_POINTER
)
```

장면에 가장 적합한 용도라면 8개의 서로 다른 사용자 정의 레이어를 무엇이든 사용할 수 있습니다. 예를 들어 하나는 NPC 시야 계산에, 다른 하나는 떨어지는 물체의 궤적 추정에 사용할 수 있습니다. 서로 다른 시스템에 서로 다른 레이어를 사용하면 필요한 엔티티와의 충돌만 확인하면 되므로 리소스를 덜 사용할 수 있습니다.

참고 [레이캐스팅](/creator/content-creator-ko/sdk7/interactivity/raycasting.md) 에서 사용자 정의 충돌 레이어를 사용하는 방법에 대해 더 알아보세요.

### 카메라와 콜라이더

플레이어의 카메라가 3인칭 모드로 움직일 때, 엔티티에 할당된 충돌 레이어에 따라 카메라가 콜라이더에 의해 막힐 수도 있고 그렇지 않을 수도 있습니다. 씬을 설계할 때 이 점에 유의하세요. 카메라가 벽이나 다른 엔티티를 통과하지 않게 하고 싶을 수 있습니다.

카메라가 벽을 통과하지 않게 하려면, 다음 두 레이어를 모두 할당해야 합니다 `ColliderLayer.CL_PHYSICS` 및 `ColliderLayer.CL_POINTER` 를 카메라를 막고 싶은 엔티티에 할당해야 합니다. 두 레이어가 엔티티의 같은 지오메트리에 할당되는 것이 중요합니다. 따라서 다음 레이어를 `ColliderLayer.CL_PHYSICS` 를 엔티티의 보이는 레이어에 할당한다면, 또한 다음 레이어도 할당해야 합니다 `ColliderLayer.CL_POINTER` 를 같은 지오메트리에 할당해야 합니다.

예를 들어 Creator Hub에서는 다음 설정 조합이 카메라가 벽을 통과하지 못하게 합니다:

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-426b56fda6516e2c2e63296a534d02aa089a566e%2Fcolliders-camera.png?alt=media)

다음 두 레이어 모두 `ColliderLayer.CL_PHYSICS` 및 `ColliderLayer.CL_POINTER` 는 엔티티 지오메트리의 같은 보이지 않는 레이어에 할당됩니다. 둘 다 보이는 레이어에 할당해도 결과는 동일합니다. 이는 Creator Hub를 통해 엔티티를 추가할 때나 코드를 통해 추가할 때나 모두 기본 동작입니다.

![](https://3980763956-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-6c77ca6fce6934f939ce70f2146d972718a25556%2Fcolliders-no-camera.png?alt=media)

이 두 번째 예제에서는 카메라가 벽을 통과할 수 있는데, 그 이유는 `ColliderLayer.CL_PHYSICS` 레이어가 엔티티의 보이지 않는 레이어에 할당되고, `ColliderLayer.CL_POINTER` 레이어가 엔티티의 보이는 레이어에 할당되기 때문입니다. 두 지오메트리의 전체 형태가 같더라도 마찬가지입니다.

```ts
// 카메라가 벽을 통과하지 않음
// 기본값(포인터와 물리 모두 보이지 않는 지오메트리 사용)
GltfContainer.create(myEntity, {
	src: '/models/myModel.gltf',
})

// 카메라가 벽을 통과하지 않음
// 둘 다 같은 보이지 않는 지오메트리를 사용
GltfContainer.create(myEntity2, {
	src: '/models/myModel.gltf',
	invisibleMeshesCollisionMask:
		ColliderLayer.CL_PHYSICS | ColliderLayer.CL_POINTER,
})

// 카메라가 벽을 통과하지 않음
// 둘 다 같은 보이는 지오메트리를 사용
GltfContainer.create(myEntity2, {
	src: '/models/myModel.gltf',
	visibleMeshesCollisionMask:
		ColliderLayer.CL_PHYSICS | ColliderLayer.CL_POINTER,
})

// 예, 카메라가 벽을 통과함
// 물리와 포인터가 서로 다른 레이어에 있음
GltfContainer.create(myEntity2, {
	src: '/models/myModel.gltf',
	invisibleMeshesCollisionMask: ColliderLayer.CL_PHYSICS,
	visibleMeshesCollisionMask: ColliderLayer.CL_POINTER,
})

// 예, 카메라가 벽을 통과함
// 물리와 포인터가 서로 다른 레이어에 있음
GltfContainer.create(myEntity2, {
	src: '/models/myModel.gltf',
	invisibleMeshesCollisionMask: ColliderLayer.CL_POINTER,
	visibleMeshesCollisionMask: ColliderLayer.CL_PHYSICS,
})
```

### 포인터 차단

콜라이더가 있는 형태만 다음으로 활성화할 수 있습니다 [포인터 이벤트](/creator/content-creator-ko/sdk7/interactivity/button-events/click-events.md). 또한 엔티티는 포인터 이벤트가 통과하는 것을 막고 그 뒤에 있는 엔티티를 맞지 않게 하려면 콜라이더가 필요합니다. 예를 들어 상자 주위에 콜라이더가 있다면 플레이어는 상자 안에 잠겨 있는 물건을 주울 수 없습니다. 플레이어의 포인터 이벤트는 다음에서 활성화된 메시의 영향만 받습니다 `ColliderLayer.CL_POINTER` 레이어.

기본적으로 MeshCollider는 Physics와 Pointer 레이어 모두에 영향을 주지만, 이 값을 변경하여 하나만, 둘 다 아니게, 또는 대신 사용자 정의 레이어에 영향을 주도록 할 수 있습니다.

{% hint style="warning" %}
**📔 참고**콜라이더 외에도 엔티티에는 다음이 있어야 합니다 `PointerEvents` 컴포넌트가 있어야 포인터 이벤트에 반응할 수 있습니다.  `pointerEventsSystem` 헬퍼도 이 요구 사항을 처리해 줍니다.
{% endhint %}

```ts
// 플레이어 물리에만 반응
// 예: 통과할 수 없지만 클릭은 가능한 보이지 않는 벽
MeshCollider.setBox(myEntity, ColliderLayer.CL_PHYSICS)

// 플레이어의 포인터에만 반응
// 예: 클릭해서 집을 수 있지만 그대로 통과할 수 있는 아이템
MeshCollider.setBox(myEntity2, ColliderLayer.CL_POINTER)
```

기본적으로 다음의 보이는 지오메트리는 `GltfContainer` 어떤 충돌 레이어에도 매핑되지 않지만, 보이지 않는 지오메트리는 Physics와 Pointer 레이어 둘 다에 영향을 줍니다. 이 값을 변경하여 하나만, 둘 다 아니게, 또는 대신 사용자 정의 레이어에 영향을 주도록 할 수 있습니다. 보이는 지오메트리 레이어도 같은 방식으로 구성할 수 있습니다.

```ts
// 기본값(포인터와 물리 모두 보이지 않는 지오메트리 사용)
GltfContainer.create(myEntity, {
	src: '/models/myModel.gltf',
})

// 플레이어 물리는 더 단순한 보이지 않는 지오메트리를 사용
// 포인터 이벤트는 보이는 지오메트리의 더 자세한 전체 윤곽을 사용
GltfContainer.create(myEntity2, {
	src: '/models/myModel.gltf',
	invisibleMeshesCollisionMask: ColliderLayer.CL_PHYSICS,
	visibleMeshesCollisionMask: ColliderLayer.CL_POINTER,
})

// 플레이어 물리와 포인터 이벤트 모두 보이는 지오메트리의 더 자세한 전체 윤곽을 사용
// 더 단순한 보이지 않는 지오메트리는 둘 다 계산하지 않도록 ColliderLayer.CL_NONE에 매핑됨
GltfContainer.create(myEntity, {
	src: '/models/myModel.gltf',
	invisibleMeshesCollisionMask: ColliderLayer.CL_NONE,
	visibleMeshesCollisionMask:
		ColliderLayer.CL_POINTER | ColliderLayer.CL_PHYSICS,
})

// 보이는 지오메트리든 보이지 않는 지오메트리든 어떤 종류의 충돌에도 반응하지 않음:
GltfContainer.create(myEntity, {
	src: '/models/myModel.gltf',
	invisibleMeshesCollisionMask: ColliderLayer.CL_NONE,
})
```

## 고급 MeshCollider 문법

다음을 생성하기 위한 전체 문법은 `MeshCollider` 컴포넌트이며, 이를 단순화하는 헬퍼 없이 보면 다음과 같습니다:

```ts
MeshCollider.create(myBox, {
	mesh: {
		$case: 'box',
		box: {},
	},
})

MeshCollider.create(myPlane, {
	mesh: {
		$case: 'plane',
		plane: {},
	},
})

MeshCollider.create(myShpere, {
	mesh: {
		$case: 'sphere',
		sphere: {},
	},
})

MeshCollider.create(myCylinder, {
	mesh: {
		$case: 'cylinder',
		cylinder: {},
	},
})
```

기본 프로토콜은 MeshCollider 컴포넌트를 이렇게 해석합니다. 헬퍼 함수는 이를 추상화하여 더 친숙한 문법을 제공하지만, 내부적으로는 이 문법을 출력합니다.

이 `$case` 필드를 사용하면 허용된 유형 중 하나를 지정할 수 있습니다. 각 유형은 서로 다른 매개변수 집합을 지원합니다.

다음의 지원되는 값은 `$case` 다음과 같습니다:

* `박스`
* `평면`
* `구`
* `원기둥`

다음의 값에 따라 `$case`, 해당 도형에 대한 객체를 정의하고 관련 속성을 전달하는 것이 유효합니다.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.decentraland.org/creator/content-creator-ko/sdk7/3d/colliders.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
