# 파트

## 개요

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

Part는 오버데어의 월드를 구성하는 가장 기본적인 요소입니다. 월드에 배치된 모든 시각적 오브젝트는 **Part**와 **MeshPart**로 구성됩니다. Part는 위치, 회전, 크기, 색상, 질감 등 다양한 속성을 통해 오브젝트의 외형을 정의하며, 중력, 마찰, 충돌 등 물리적 특성을 정의할 수 있습니다.

Part는 큐브(Cube), 구(Sphere), 원기둥(Cylinder) 등 기초인 모양으로 제공되는 월드 오브젝트입니다. 크리에이터는 이 기본 형태를 활용하여 모델을 구성하고 배치할 수 있습니다.

## Properties

Part의 속성은 크게 세 가지로 구분됩니다

### Appearance

* CastShadow: Part의 그림자 유무 여부를 설정합니다.
* Shape: Part의 기본 외형(박스, 구, 원기둥 등)을 설정합니다.
* Color: Part의 색상을 설정합니다.
* Material: Part의 표면 질감을 설정합니다(예: 플라스틱, 금속 등).
* Transparency: Part의 투명도를 설정합니다.

### Transform

* CFrame
  * Position: Part의 월드 좌표를 정의합니다.
  * Orientation: Part의 회전 방향을 설정합니다.
* Size: Part의 크기를 조정합니다.

### 물리적 특성

* Anchored: Part를 고정하여 움직이지 않도록 설정합니다.
* CanCollide: 다른 오브젝트와 충돌 여부를 설정합니다.
* Massless: 물리 시뮬레이션에서 질량을 무시할지 여부를 결정합니다.

### 기타 특성

* CanClimb: 캐릭터의 Climbing 가능 여부를 결정합니다. CanClimb이 켜진 경우, 캐릭터 접촉시 캐릭터는 Climbing 상태로 변경되어 Part의 벽면을 타고 위로 올라갈 수 있습니다.

## CFrame, Origin, Pivot간의 관계

### CFrame

* CFrame은 **Coordinate Frame**의 약자로, 오브젝트의 **위치(Position)**&#xC640; **회전(Orientation)** 정보를 포함하는 데이터 타입입니다.
* CFrame은 3D 공간에서 오브젝트를 배치하거나 회전시키는 데 사용됩니다. 예를 들어, 특정 위치에 오브젝트를 배치하면서 동시에 특정 방향을 바라보도록 설정할 수 있습니다.
* **CFrame.Position**은 CFrame에서 오브젝트의 위치만을 추출한 값으로, Vector3 데이터 타입으로 표현됩니다.
* CFrame은 다음과 같은 특징을 가집니다:
  * 위치와 회전을 동시에 처리 가능.
  * 오브젝트를 특정 방향으로 바라보게 설정 가능
    * 예: `CFrame.new(startPosition, targetPosition)`
  * 성능 면에서 효율적이며, 여러 수학적 연산(예: 오프셋 적용, 선형 보간 등)에 적합합니다.

### Origin

* Origin은 오브젝트의 **피벗(Pivot) 포인트**를 나타냅니다. 이는 오브젝트의 기본 회전 중심점으로 사용됩니다.
* Origin은 CFrame과는 별도로 존재하며, 주로 Model이나 Part의 피벗 위치를 조정하거나 참조할 때 사용됩니다.
* **PivotTo()** 함수나 **GetPivot()** 함수를 통해 Origin 정보를 다룰 수 있습니다. 이를 통해 Model이나 Part의 Pivot을 기준으로 위치와 회전을 조정할 수 있습니다.
* Origin은 다음과 같은 특징을 가집니다:
  * Pivot 포인트는 오브젝트의 중심이 아닐 수도 있음. (사용자가 임의로 설정 가능)
  * Model을 부모로 하는 전체 오브젝트들을 이동하거나 회전시킬 때 유용함.
  * 스크립트 상에서 직접 수정은 불가능하지만, 간접적으로 **PivotTo()** 등을 통해 조작할 수 있습니다.

## Part 추가 및 외형 변경

스튜디오에서 **Home - Add 버튼**을 클릭하여 원하는 형태의 Part를 추가할 수 있습니다.

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

배치된 Part는 삭제하지 않고도 Properties 창의 **Shape 속성**을 변경하여 손쉽게 모양을 바꿀 수 있습니다.

<div align="left"><figure><img src="/files/jK7FMZ4VhFQqzOgMlts3" alt=""><figcaption></figcaption></figure></div>

## Part의 CanClimb 옵션

CanClimb 옵션을 활용하면 명시적으로 Part를 Climbing 가능한 오브젝트로 만들 수 있습니다.

캐릭터가 CanClimb이 켜진 Part에 접촉하면, 캐릭터는 Climbing 상태로 변경되어 벽을 오를 수 있습니다.

CanClimb이 켜져 있다고 하더라도, 캐릭터가 마주보는 벽의 경사가 GameSettings의 MaxSlopeAngle 보다 작다면, Climbing 상태로 변경되지 않고 경사진 벽을 걷거나 뛰어서 이동합니다.

만일 CanClimb 옵션을 LocalScript로 변경 하게 될 경우 해당 Client에만 적용되며, 서버와 다른 클라이언트로 Replicate 되지 않습니다. 이를 이용해 특정 플레이어만 벽을 오르게 할 수도 있습니다.

서버에서 CanClimb 옵션을 변경 하면 모든 클라이언트로 Replicate 되어, 모든 플레이어가 변경된 Climb 상태를 확인할 수 있습니다.


---

# Agent Instructions: 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:

```
GET https://docs.overdare.com/korean/manual/studio-manual/object/part.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
