# Mobility 설정

## 개요

Mobility 옵션은 월드에 배치되는 인스턴스를 **Static**과 **Movable**으로 구분하여 성능 최적화를 지원합니다.

각 인스턴스의 변화 가능 여부에 따라 렌더링 및 업데이트 방식이 달라지며, 불필요한 연산을 줄여 안정적인 퍼포먼스를 제공합니다.

## 옵션 비교

### **Static**

* 위치, 회전, 크기가 변하지 않는 오브젝트에 적합
* 라이트맵 등 사전 계산된 데이터를 활용하여 최소한의 연산으로 처리
* 런타임 중 이동, 회전, 크기 변경 불가

### **Movable**

* 이동, 회전, 애니메이션, 플레이어 상호작용이 필요한 오브젝트에 적합
* 매 프레임 상태 변화를 계산하여 동적인 연출과 상호작용성을 제공
* 성능 비용이 수반되므로, 주요 게임플레이 요소나 표현이 중요한 오브젝트에 사용 권장

## 사용 방법

**Workspace에 인스턴스 배치** 후, `Property > Mobility` 옵션에서 Static 또는 Movable을 선택합니다.

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

Mobility는 **Workspace의 최상위(직접 자식) 인스턴스**에서만 변경할 수 있습니다.

### **Static 권장 대상**

* **대상 예시**: 건물, 지형, 내부 구조물, 바위, 나무, 배경 소품 등
* **권장 이유**:
  * 게임 중 위치나 크기 변화가 전혀 없으므로 Static으로 설정하면 **조명과 연산을 사전에 계산**하여 불필요한 리소스 사용을 최소화할 수 있습니다.
  * Static 오브젝트는 GPU/CPU 부담이 적어, 대규모 맵이나 많은 수의 오브젝트를 배치할 때도 안정적인 퍼포먼스를 유지할 수 있습니다.
* **주의 사항**:
  * Static으로 설정된 오브젝트는 런타임에서 이동하거나 조작할 수 없으므로, **게임플레이와 직접적으로 연관되지 않는 배경 요소**에만 사용해야 합니다.

### **Movable 권장 대상**

* **대상 예시**: 캐릭터, 장착 아이템, 차량, 움직이는 바닥, 이동 가능한 물체, 플레이어가 직접 상호작용하는 기믹 오브젝트 등
* **권장 이유**:
  * Movable은 이동·회전·애니메이션과 자연스럽게 연동되므로, **게임플레이의 핵심 동적 요소**를 표현할 때 적합합니다.
  * 플레이어가 직접 조작하거나 물리적으로 반응해야 하는 오브젝트는 반드시 Movable이어야 동적인 변화를 표현 할 수 있습니다.
* **주의 사항**:
  * Movable은 매 프레임 변화를 계산하기 때문에 Static보다 성능 부담이 크며, 특히 다수의 오브젝트를 동시에 Movable로 설정할 경우 성능 저하가 발생할 수 있습니다.
  * 따라서 Movable은 **핵심 상호작용 오브젝트에 한정**하여 사용하는 것이 권장되며, 불필요한 요소까지 Movable로 두는 것은 피해야 합니다.

## 사용 시 주의 사항

### Static 인스턴스의 계층 구조 제한

* Static은 움직이지 않는 인스턴스로 정의되어 있으므로, **Movable 인스턴스의 자식으로 배치할 수 없습니다.**
* 오버데어 스튜디오에서는 부모 인스턴스가 이동하면 자식 인스턴스도 함께 이동하는 구조이므로, Static이 부모의 이동을 따라가면 정의에 위배되어 문제가 발생합니다.
* 이를 방지하기 위해, **편집기에서는 Movable 하위에 Static을 넣을 수 없도록 제한**되어 있습니다.
* 런타임 중에도 Movable 인스턴스 하위에 Static을 넣으려고 하면 **에러가 발생**하도록 설계되었습니다.

### 변경 및 생성 제한

* Workspace 외부에 있는 인스턴스는 Mobility를 변경할 수 없습니다.
* 런타임 중에는 Mobility 옵션을 변경할 수 없습니다.
* Static 인스턴스는 런타임에서 동적으로 생성하거나 복제할 수 없습니다.
* Static 인스턴스는 `CFrame`을 변경하거나 `Anchored` 속성을 해제하는 등 위치를 직간접적으로 변경하는 것을 지원하지 않습니다.


---

# 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/asset-and-resource-creation/mobility.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.
