---
title: 3. 빌드잇 유니티 플러그인으로 월드 꾸미기
slug: world-sdk-guide-kr/3
docTags: 
createdAt: 2025-04-14T07:50:40.938Z
---

# 1. 기본 기능 추가하기

:::hint{type="success"}
**아래 영상을 따라하면, 코딩 없이도 다양한 기능을 월드에 추가할 수 있어요!**

**언어별 자막이 지원되니, 자막을 켜고 시청해주세요!**
:::

::embed[]{url="https://youtu.be/lqEmRnzLdGo?si=R51sWhdwIeqL27n_"}

:::BlockQuote
📌 **아래에서 원하는 오브젝트를 클릭해보세요!**
:::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
[Interaction 오브젝트](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[스폰 위치 지정하기](./#--)&#x20;

[사운드 재생하기](./#-)&#x20;

[미션 타이머](./#-)&#x20;

[랜덤 숫자 생성하기](./#--)&#x20;
:::

:::VerticalSplitItem
[Teleport 오브젝트](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[BGM 재생하기](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[웰컴 팝업 만들기](./#--)&#x20;

[Reward Chest 오브젝트](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[Drawing Canvas 오브젝트](docId:9prnC6EA2T9b8-z39xafG)
:::
::::

## Interaction 오브젝트

**Interaction** 오브젝트는 사용자가 아이콘을 클릭하면 캐릭터가 특정한 제스쳐를 취합니다. 

- **Interaction\_bed**: 캐릭터가 침대에 자연스럽게 누워 있는 제스쳐를 재생합니다.
- **Interaction\_chair**: 캐릭터가 의자에 자연스럽게 앉아 있는 제스쳐를 재생합니다.
- **Interaction\_dance**: 캐릭터가 춤추는 제스쳐를 재생합니다.

인터랙션 오브젝트를 수정해서 다양한 형태로 응용할 수 있습니다. 

- **애니메이션 클립 변경**: 자식 오브젝트인 InteractionPoint의 애니메이션 클립에 적용된 애니메이션 파일을 교체하면 인터렉션 시 다른 제스쳐를 취하게 됩니다. 
- **Is Snap Bone**: 캐릭터의 위치는 특정 Bone을 기준으로 고정됩니다. 예를 들어 Bone이 Foot으로 설정된 경우 애니메이션이 재생되는 동안 캐릭터의 발이 InteractionPoint 위치에 고정됩니다. 이를 해제하면 오브젝트와 떨어져서 동작하게 됩니다. 
- **Body Bone**: Is Snap Bone이 체크 상태일 때 캐릭터가 고정될 Bone을 설정합니다.
- **오브젝트 외형 변경**: 외형을 담당하는 자식 오브젝트를 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 
- **인터렉션 아이콘 위치 변경**: 오브젝트의 외형을 변경했다면 그에 맞게 자식 오브젝트인 IconPos의 위치를 수정해 보세요. 

![](https://api.archbee.com/api/optimize/BtCo2cIFh9h5Mo0EP64o_-3mec8_PR9hKEIRR718TGI-20241030-020537.png)



## 스폰 위치 지정하기

**SpawnPoint** 오브젝트를 사용하면 월드가 시작될 때 ZEPETO 캐릭터가 생성되는 지점을 설정할 수 있습니다.

- Scene에 Spawn Object가 없는 경우 ZEPETO 캐릭터는 x=0, y=0, z=0 좌표에 생성됩니다.
- Spawn Object가 여러 개 있는 경우 ZEPETO 캐릭터는 무작위로 그 중 하나를 선택하여 해당 위치에 배치됩니다.

![](https://api.archbee.com/api/optimize/BtCo2cIFh9h5Mo0EP64o_-0uf2Ekf3584C0uEKtcuw_-20241030-020632.png)



## 사운드 재생하기

**SFX** 오브젝트는 사용자가 아이콘을 클릭하면 지정된 사운드를 재생합니다. 오브젝트를 Scene에 배치하고 인스펙터에서 설정을 변경해 보세요. 

- **AudioClip**: 인스펙터 창에서 오디오 클립을 할당할 수 있습니다. 여기에서 .mp3 또는 .wav 형식의 오디오 파일을 적용합니다.
- **IconPos**: 사용자가 터치하는 버튼의 위치를 ​​수정할 수 있습니다.

![](https://api.archbee.com/api/optimize/BtCo2cIFh9h5Mo0EP64o_-81sQOudoacJnA4I72juDX-20241030-020522.png)



## 미션 타이머

**Timer** 오브젝트는 타이밍 UI를 표시하고 사용자가 "시작" 오브젝트를 클릭하면 시간 기록을 시작합니다. 사용자가 "도착" 오브젝트를 클릭하면 타이밍 UI가 사라지고 성공 메세지가 나타납니다. 

Timer 오브젝트의 외형 및 인터렉션 버튼 위치도 수정해서 나만의 컨셉으로 디자인할 수 있습니다. 

- **오브젝트 외형 변경**: 외형을 담당하는 자식 오브젝트를 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 
- **인터렉션 아이콘 위치 변경**: 오브젝트의 외형을 변경했다면 그에 맞게 자식 오브젝트인 IconPos의 위치를 수정해 보세요. 

![](https://api.archbee.com/api/optimize/BtCo2cIFh9h5Mo0EP64o_-SNz_WMgocucenDZLD8a93-20241030-020622.png)



## 랜덤 숫자 생성하기

**Roulette** 오브젝트를 사용하면 사용자가 아이콘을 클릭했을 때 랜덤한 숫자를 생성하고 Zepeto 채팅 화면에 결과가 나타납니다. 

- **숫자 범위 설정**: 룰렛 오브젝트를 선택하고 Inspector 창에서 최소 숫자와 최대 숫자를 수정할 수 있습니다. 

Roulette 오브젝트의 외형 및 인터렉션 버튼 위치도 수정해서 나만의 컨셉으로 디자인할 수 있습니다. 

- **오브젝트 외형 변경**: 외형을 담당하는 자식 오브젝트를 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 
- **인터렉션 아이콘 위치 변경**: 오브젝트의 외형을 변경했다면 그에 맞게 자식 오브젝트인 IconPos의 위치를 수정해 보세요. 

![](https://api.archbee.com/api/optimize/BtCo2cIFh9h5Mo0EP64o_-HGqhbeNLskUZw1pDRsFag-20241030-020553.png)



## Teleport 오브젝트

**Teleport** 오브젝트는 사용자가 아이콘을 클릭했을 때 지정된 위치로 순간 이동시켜 줍니다. 

- **도착 위치 지점**: 자식 오브젝트인 destination의 위치를 원하는 곳으로 이동시켜서 도착 지점을 설정할 수 있습니다. 

Teleport 오브젝트의 외형 및 인터렉션 버튼 위치도 수정해서 나만의 컨셉으로 디자인할 수 있습니다. 

- **오브젝트 외형 변경**: 외형을 담당하는 자식 오브젝트를 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 
- **인터렉션 아이콘 위치 변경**: 오브젝트의 외형을 변경했다면 그에 맞게 자식 오브젝트인 IconPos의 위치를 수정해 보세요. 

![](https://api.archbee.com/api/optimize/BtCo2cIFh9h5Mo0EP64o_-PnTjfh9CrHEty2VM0Dcd_-20241030-020545.png)



## BGM 재생하기

**BGM** 오브젝트를 Scene에 배치하면 BGM이 재생됩니다. Scene에 하나만 배치해 주세요.

- **AudioClip**: 인스펙터 창에서 오디오 클립을 할당할 수 있습니다. 여기에서 .mp3 또는 .wav 형식의 오디오 파일을 적용합니다.

![](https://api.archbee.com/api/optimize/BtCo2cIFh9h5Mo0EP64o_-lfyL1e2pJSJ2QDeh_b3RH-20241030-020513.png)

우측의 BGM 아이콘을 눌러 유저가 배경 음악을 켜거나 끌 수 있습니다.&#x20;

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/I5T7Ac25AuC41H6_ONOS2_image.png)



## 웰컴 팝업 만들기

**Popup** 오브젝트는 월드 입장시 띄우는 팝업 윈도우입니다. 팝업 내 버튼을 클릭하면 자동으로 창이 닫힙니다.&#x20;

팝업 윈도우를 사용해서 월드의 소개나, 나만의 이벤트를 홍보해 보세요!

:::hint{type="danger"}
**주의사항**

- Popup window는 바닥에 배치하는 형태가 아닙니다.
- UI 화면 영역에 배치되며, Game 뷰에서 확인할 수 있습니다.
:::

Popup을 Hierarchy에서 선택한 후 인스펙터에서 속성을 변경할 수 있습니다. 변경한 내용은 Play모드에서 확인이 가능합니다.

- **Background Image**: 2D sprite이미지를 드래그해서 변경할 수 있습니다.
- **Message**: 메세지 텍스트를 변경할 수 있습니다.
- **Message Color**: 메세지 텍스트의 컬러를 변경할 수 있습니다.
- **Message Shadow**: 메세지 텍스트의 그림자 효과를 on/off 할 수 있습니다.
- **Button Title**: 버튼 텍스트를 변경할 수 있습니다.

![](https://api.archbee.com/api/optimize/BtCo2cIFh9h5Mo0EP64o_-LK33ZoHZSmXIA7jUT9L_Y-20241101-030457.png)



## Reward Chest 오브젝트

**Reward Chest**를 내 월드에 배치하면 월드를 플레이하는 사람들이 이벤트 내용에 따라 젬 또는 코인을 획득할 수 있습니다.&#x20;

유저가 Reward Chest가 존재하는 월드에 입장하면, 해당 월드에 존재하는 Reward Chest의 갯수를 안내하는 팝업이 표시됩니다.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/4Hhp2HzazysI1dh9SbGeD_popup.gif)

Reward Chest를 월드 내의 비밀 장소에 숨기거나, 점프맵의 목표 지점에 배치해서 플레이하는 사람들에게 보상을 지급해 보세요!

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/ArYdSd6c2plUU6Qc7sN5e_reward.gif "Reward Chest에서 보상을 획득하는 모습")

- 동작 로직
  - 월드 크리에이터는 자신의 월드에 Reward Chest를 적절한 곳에 배치해 주세요.
    - 너무 쉽게 발견할 수 있는 곳에 배치하지 말아주세요.
    - 보상을 너무 쉽게 얻을 수 있게 배치할 경우, 심사 통과가 되지 않거나 예고 없이 월드가 내려갈 수 있습니다.&#x20;
    - 월드 크리에이터도 자신의 월드에서 보상을 얻을 수 있습니다.&#x20;

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/d1wECjm8cjBHAzKCjBPsE_image.png)

- **Timeout**&#x20;
  - Reward Chest를 통해 월드의 체류시간을 늘리고 싶다면 보상을 얻기 전 약간의 카운트다운을 추가해 보세요.&#x20;
  - Timeout 필드에 카운트다운 시간(단위:초)을 입력하세요. 기본 값은 60초입니다.&#x20;
    - 0을 입력하면 카운트다운 없이 바로 보상을 획득하게 됩니다.
- **Activated Icon Color**
  - 카운트다운이 시작되기 전에는 인터랙션 아이콘이 흰색으로 표시됩니다. 카운트다운이 완료되면, 아이콘 색상이 설정된 Activated Icon Color로 변경됩니다.
- **Group id**
  - 동일한 Group id 중 단 하나의 상자만 보여지게 됩니다.
  - 만약 서로 다른 Group id를 지정한다면 각각의 그룹에서 하나의 상자가 보여지게 됩니다.



:::hint{type="danger"}
**주의 사항**

- 젬/코인 획득 이벤트는 제페토에서 진행하게 되며, 월드 크리에이터가 설정할 수 없습니다.&#x20;
- 한 사람당 이벤트에서 획득 가능한 보상에는 제한이 있으며 제한에 다다를 경우, 더이상 보상을 획득할 수 없습니다.
- 이벤트 기간이 아닐 경우에는 Reward Chest가 보여지지 않으며, 보상을 획득할 수 없습니다.&#x20;
:::



## Drawing Canvas 오브젝트

**DrawingCanvas**는 월드 내에서 플레이어들이 자유롭게 그림을 그릴 수 있는 캔버스 오브젝트입니다.

자동으로 **멀티플레이 동기화**가 지원되어, 같은 월드에 접속한 유저들과 함께 실시간으로 그림을 그리며 소통할 수 있습니다.

친구들과 함께 자유롭게 낙서하며 노는 공간을 만들거나, 그림을 그려 정답을 맞히는 퀴즈 게임을 기획하는 등 나만의 창의적인 아이디어로 월드에 다양하게 활용해 보세요!

![Drawing Canvas Object](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/IRJg7YRVf1f1s1M-W_Y6s_group-22.png)

- **Build it Asset Browser > Utility**에서 **DrawingCanvas** 오브젝트를 선택해 주세요.
- **Scene**에서 원하는 위치에 배치해 주세요.

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/ypsDEPJHMuyaTYfYnIBjO_drawing.png" size="60" isUploading="false" width="418" height="378" darkWidth="418" darkHeight="378" alt="DrawingCanvas placed in Hierarchy" showCaption="false"}

- **Hierarchy** 창에서 `DrawingCanvas` 오브젝트가 `Objects` 하위에 올바르게 들어가 있는지 꼭 확인해 주세요.

### 드로잉 기능 사용하기

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/OEfVOc88icYS_scKSlGAM_image-18.png" size="80" isUploading="false" width="893" height="498" darkWidth="893" darkHeight="498" alt="Drawing Canvas" showCaption="false"}

월드에 방문한 유저들은 캔버스에 다가가 아래와 같은 다양한 그리기 기능을 직접 체험할 수 있습니다.

- **그리기 모드 진입**: 캔버스에 가까이 다가가면 드로잉 UI 아이콘이 나타납니다. 해당 아이콘을 누르면 그리기 모드가 시작됩니다.
- **브러쉬 및 색상 설정**:&#x20;
  - **브러쉬 크기 조절:&#x20;**&#xC67C;쪽 Bar를 이용해 브러쉬의 크기를 조절하고 원하는 색상을 자유롭게 고를 수 있습니다.&#x20;
  - **색상 진하기 조절:** 오른쪽 Bar를 움직여 색의 채도를 조절할 수 있습니다.
- **지우기**: 지우개 툴을 활용해 잘못 그린 부분을 간편하게 지우고 수정할 수 있습니다.
- **페인트 통**: 브러쉬로 선을 그려 영역을 만든 뒤 그 안쪽을 터치하면, 선택한 색상으로 영역이 한 번에 채워집니다.
- **되돌리기 및 다시 실행**: 이전 단계로 되돌리거나, 되돌린 작업을 다시 복구할 수 있습니다. 단, 이 기능은 최대 3단계까지만 지원되니 참고해 주세요.
- **전체 지우기:** 캔버스에 그려진 모든 것을 지울 수 있습니다.

:::hint{type="success"}
**멀티플레이 사용 규칙&#x20;**

- **한 캔버스에는 한 사람만 그릴 수 있습니다:** 어떤 유저가 캔버스에 그림을 그리기 시작하면, 그 캔버스는 해당 유저가 점유한 상태가 됩니다. 다른 유저들에게는 드로잉 아이콘이 아예 숨겨지므로, 누군가 이미 그림을 그려둔 캔버스에는 다른 사람이 추가로 그릴 수 없습니다.
- **내가 그리던 캔버스는 언제든 이어서 그릴 수 있습니다:** 내가 그림을 그린 캔버스는 아이콘이 계속 나타나며 자유롭게 이어서 그릴 수 있습니다.
- **방에서 나가면 캔버스가 초기화 됩니다:** 그림을 그리던 유저가 방에서 퇴장하면 캔버스에 그렸던 그림이 지워집니다. 캔버스는 다시 누구나 그림을 그릴 수 있는 빈 상태로 돌아갑니다.
- **배치 개수 권장 (최적화):** 캔버스 배치 개수에는 이론적인 제한이 없습니다. 다만, 원활한 월드 최적화를 고려하여 한 월드당 **10개 이내**로 배치하시는 것을 권장합니다.
:::



# 2. NPC 오브젝트

:::BlockQuote
📌 **아래에서 원하는 오브젝트를 클릭해보세요!**
:::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
**[기본 NPC 오브젝트](docId:9prnC6EA2T9b8-z39xafG)**

**[대화형 NPC 오브젝트](docId:9prnC6EA2T9b8-z39xafG)**
:::

:::VerticalSplitItem
[NPC Dialogue 설정하기](docId:9prnC6EA2T9b8-z39xafG)


:::
::::

## 기본 NPC 오브젝트

Zepeto ID를 입력하여 NPC 캐릭터를 만들 수 있습니다. NPC 오브젝트를 Scene에 배치하고 인스펙터에서 설정을 변경해 보세요.&#x20;

편집 모드에서는 NPC가 나타나지 않고 Play를 눌렀을 때 NPC가 등장합니다.



아래의 속성들을 활용해 NPC를 설정해 보세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/zanv6Go2AsBVQpKyEjLIs_image.png "Basic NPC Object")

- **Zepeto ID**: 사용할 제페토 계정 ID를 입력하세요.
- **Dialouge**
  - **Has Speech Bubble**: 활성화하면 NPC에게 가까이 갔을 때 말풍선이 표시됩니다.
  - **Speech Bubble Text**: NPC 캐릭터의 말풍선 텍스트를 입력하세요.
    - 말풍선 텍스트는 여러 개 등록할 수 있습니다.
    - \+ 버튼을 눌러 새로운 텍스트를 추가하거나, – 버튼을 눌러 기존 텍스트를 삭제할 수 있습니다.
  - **Randomize Dialogue**: NPC의 말풍선 텍스트가 표시되는 순서를 랜덤으로 설정할 수 있습니다.
    - 해당 필드의 체크를 해제하면, 첫번째(Element 0)부터 순서대로 텍스트가 출력됩니다.
  - **Speech Bubble Text Duration:&#x20;**&#xB9D0;풍선 텍스트가 표시되는 시간을 초 단위로 설정합니다.
  - **Speech Bubble Prefab:&#x20;**&#xB9D0;풍선 프리팹입니다.
  - **Speech Bubble Y Offset:&#x20;**&#xCE90;릭터의 머리 위치를 기준으로 말풍선의 Y축(높이) 위치를 조절할 수 있습니다.
- **Animations**
  - **Dialogue Animations:** 대화가 재생될 때 함께 재생될 캐릭터 애니메이션 목록입니다.
    - Speech Bubble Text의 순서와 일치하는 애니메이션이 재생됩니다.
    - 만약 현재 대화 순서에 해당하는 애니메이션이 지정되어 있지 않다면, 목록의 첫 번째(Element 0) 애니메이션이 재생됩니다.
  - **Idle Animation:&#x20;**&#x45;nable Movement가 비활성화 된 경우, 캐릭터가 가만히 서 있을 때 재생되는 애니메이션입니다
- **Movement**
  - **Enable Movement:&#x20;**&#xD65C;성화하면 캐릭터가 정의된 영역 내에서 무작위로 움직입니다.
    - 가만히 있는 NPC를 원한다면 이 옵션을 꺼주세요.
  - **Movement Area:&#x20;**&#x4E;PC가 움직일 수 있는 활동 영역을 Box Collider 컴포넌트로 지정합니다.
    - Box Collider의 크기와 위치를 수정해서 NPC의 활동 영역을 커스텀할 수 있습니다.
    - Box Collider는 Play 모드일때는 사라집니다.
  - **Min Idle Time:&#x20;**&#xC774;동 후 다음 이동까지 대기하는 최소 시간(초)입니다.
  - **Max Idle Time:&#x20;**&#xC774;동 후 다음 이동까지 대기하는 최대 시간(초)입니다.



- 사용 예시

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/j1R6COt4PX1k8bdYSPk4U_image.png)



## 대화형 NPC 오브젝트&#x20;

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/O8PhoJvXt4of5z2eSyeqt_group-20.png)

**NPC\_v2 오브젝트**에는 플레이어가 다가가서 상호작용을 했을 때 본격적인 대화 모드로 진입하는 **대화(Dialogue)** 기능이 추가되었습니다.

기본적인 설정 방법은 '기본 NPC 오브젝트'와 동일하지만, 다이얼로그 전용으로 새롭게 추가된 속성들이 있습니다. 아래에서 어떤 점이 다른지 확인해 보세요!

- **Zepeto ID, Animations(애니메이션), Movement(이동)** : 기존 NPC와 동일하게 작동합니다.

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/TkOZLEQSlSkXegfwMzGab_group-21.png" size="64" width="502" height="557" darkWidth="502" darkHeight="557" position="center" caption="NPC_v2 " showCaption="true"}

- **Npc Name** : 대화 화면에 표시될 NPC의 이름을 입력해 주세요.
- **Dialogue Id** : 적용할 대화 파일의 이름을 입력해 주세요.



## NPC Dialogue 설정하기

새로운 **NPC Dialogue System**을 활용하면 월드에 한층 더 재미있고 생동감 넘치는 NPC를 추가할 수 있습니다!

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/1huH_rY1OkPfQxEnEhtC2_image.png)

단순한 단답형 대화가 아니라, 유저의 선택에 따라 **이야기가 계속 이어지는 대화 시스템**을 만들 수 있습니다.&#x20;

전 세계 유저를 위한 다국어 지원(Localization) 기능까지 더해져, 누구나 자연스럽게 대화에 몰입하게 됩니다.

### 1. Dialogue Helper 활용하기

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/dZsdPGy7tfM7RbOgLUlZ3_image.png" size="46" width="536" height="634" position="center" caption="Dialogue Helper" darkWidth="536" darkHeight="634" showCaption="true"}

**Dialogue Helper**는 다이얼로그 생성과 NPC 연결을 한곳에서 관리 메뉴입니다.

- 상단 메뉴의 **ZEPETO > Dialogue Helper**를 선택해 창을 열어주세요.
- **NPC 필드** : Scene에서 현재 선택된 NPC를 표시합니다. `ZepetoNPC` Component를 가진 GameObject를 선택하면 자동으로 업데이트됩니다. (자동 업데이트가 되지 않았다면, **Refresh**를 눌러주세요.)

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/kEYc9XIBgjQJWtjfvpXRA_group-16.png" size="58" width="381" height="324" position="center" darkWidth="381" darkHeight="324" showCaption="false"}

- **Dialogue 필드** <font color="#0C121D">\: </font>NPC에게 연결된 다이얼로그를 보여주는 창입니다. 이곳을 클릭하면 원하는 다이얼로그 에셋(Node Graph Asset)을 쉽게 골라 연결할 수 있습니다.&#x20;
- **Export 버튼** : 다이얼로그 설정을 마친 후, 실제 월드에서 다이얼로그가 제대로 작동하도록 적용하는 버튼입니다. NPC 대사를 모두 입력한 뒤에는 이 버튼을 꼭 눌러주셔야 다이얼로그 에셋이 최종적으로 생성됩니다.
- **Dialogue 폴더** : 지금까지 만든 모든 다이얼로그 에셋(Node Graph Asset)이 저장된 폴더를 엽니다.
- **Create New** : 새로운 다이얼로그 에셋(Node Graph Asset)을 만듭니다.

:::hint{type="success"}
**다이얼로그 에셋 (Node Graph Asset)** 이란?&#x20;

우리가 작성한 대사 내용이 저장되는 **다이얼로그 파일**입니다.&#x20;
이 파일이 있어야 실제 월드 속 NPC가 우리가 적은 대로 말할 수 있게 됩니다.
:::



### 2. Dialogue Graph Editor (노드 에디터) 활용하기

**Dialogue Helper**에서 **Create New**를 누르거나 다이얼로그 에셋을 열면 **Dialogue Graph Editor**가 나타납니다.&#x20;

복잡한 다이얼로그 흐름을 대화 상자들을 서로 연결하는 방식으로 쉽게 디자인할 수 있는 에디터입니다. 선택지에 따라 다이얼로그가 어떻게 이어지는지 직접 확인하며 만들 수 있습니다.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/TMpPLc8fY8eMDeNEimZdQ_image.png "Dialogue Graph Editor")

**Dialogue Graph Editor 사용법**

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/J3QwwBROtvRsFflZo3FRc_group-17.png "How to use Dialogue Graph Editor")

- **Minimap**: 다이얼로그 구조가 복잡해지고 노드가 많아졌을 때, 전체적인 흐름을 한눈에 볼 수 있도록 도와주는 지도입니다. 미니맵을 보며 현재 화면이 어디를 비추고 있는지 확인하거나, 원하는 위치로 화면을 빠르게 이동시킬 수 있습니다.
- **Info**: Dialogue Graph Editor 를 다룰 때 필요한 기본적인 화면 조작법과 단축키 등을 안내해 줍니다.&#x20;



**핵심 노드(Node) 종류**

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/YGNKKmXDfMvx9fZ0LDV5z_image.png" size="46" width="498" height="706" position="center" caption="NPC Node" darkWidth="498" darkHeight="706" showCaption="true"}

- **NPC Node**: NPC의 대사와 플레이어의 응답(선택지)을 입력하는 핵심 노드입니다.
  - **What the NPC says**: NPC가 말할 대사를 입력하는 칸입니다.
  - **Gesture**: 대화가 진행되는 동안 NPC가 보여줄 애니메이션을 선택할 수 있습니다.
    - 기본 제스처는 드롭다운 목록에서 원하는 동작을 골라 적용할 수 있습니다.&#x20;
      - 제공 동작: **Idle**, **Talk**, **Laugh**, **Think**, **Ok**, **No**, **Hi**, **Bye**.

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/CrkEYK2q0yLLwv8nCVZTc_dialogue.png" size="78" width="674" height="428" darkWidth="674" darkHeight="428" position="center" caption="Custom Gesture" showCaption="true"}

:::Paragraph{listStyleType="disc" indent="3"}
목록에 없는 나만의 제스처를 사용하고 싶다면 **Custom**을 선택한 뒤, **Custom Animation** 칸에 **연결할 애니메이션 이름을 똑같이** 입력해 주세요.
:::

:::Paragraph{listStyleType="disc" indent="3"}
연결할 캐릭터 애니메이션 파일은 유니티 프로젝트 내 **`Resources/Animations/` 폴더** 안에 넣어주세요.
:::

:::hint{type="danger" indent="4"}
**주의사항**
**Custom&#x20;**&#xC81C;스처를 사용할 때 입력한 애니메이션 파일 이름에 오타가 있거나 해당 이름의 파일이 없는 경우 **Export가 불가**하다는 알림창이 뜹니다.
:::

- **Answer options**: 플레이어가 선택할 수 있는 답변을 1개\~3개까지 추가할 수 있습니다.
  - 각 답변 별 노드를 연결하여 유저의 선택에 따라 새로운 대화로 이어지게 만들 수 있습니다.
- **End Node**: 대화가 끝나는 지점을 나타냅니다. 플레이어가 이 노드에 연결된 선택지를 고르면 대화가 종료됩니다.

****

**그래프 편집 및 연결**

다이얼로그 캔버스에서 아래와 같은 방법으로 노드를 생성하고 연결할 수 있습니다.

- 캔버스의 빈 공간을 **우클릭**하여 새로운 노드를 생성(**Create Node**)하거나, 기존 노드를 복사 및 삭제할 수 있습니다.
- 선택지(Answer options) 우측의 **Output 포트**를 드래그해서 다음 노드의 **Input 포트**에 연결하면 대화의 흐름이 완성됩니다.

:::hint{type="success"}
**TIPs**

네비게이션 화면은 아래와 같은 방법으로 이동할 수 있습니다.

- **화면 이동 (Navigation):**
- **마우스 가운데 버튼** (휠 클릭)
- **마우스 왼쪽 버튼 + Option/Alt (⌥) 키**

**선택 및 메뉴 (Selection & Menu):**

- **단일 선택:** 마우스 왼쪽 버튼 (클릭)
- **영역 선택:** 마우스 왼쪽 버튼 (드래그하여 사각형으로 선택)
- **노드 메뉴 열기:** 마우스 오른쪽 버튼 (클릭)
:::

****

**다국어(Localization) 지원 설정**

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/X-pD1SQ59Yob7uCAi0Zmm_image.png" size="80" width="998" height="868" position="center" caption="Localization" darkWidth="998" darkHeight="868" showCaption="true"}

- **Inspector 창 설정**: 생성한 다이얼로그 에셋(Node Graph Asset)을 클릭하고 Inspector 창을 보면 지원할 언어(English, Korean, Japanese 등)를 체크할 수 있습니다.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/DkNL6q-yMPRz81r6VOrM8_group-8.png " Language Selector")

- **에디터 툴바 활용**: 에디터 창 좌측 상단의 **Language Selector**에서 언어를 변경해가며 각 언어에 맞는 번역 텍스트를 직접 입력할 수 있습니다.



### 3. 새로운 NPC Dialogue 생성하기

::::WorkflowBlock
:::WorkflowBlockItem
**다이얼로그 생성하기**

- **Dialogue Helper** 창에서 **Create New**를 클릭합니다.

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/nq91ZFLWXZoqMPeeXDgx-_group-11.png" size="80" width="705" height="502" position="center" caption="Create New Dialogue" darkWidth="705" darkHeight="502" showCaption="true"}

- 자동으로 열리는 **Dialogue Editor**에서 NPC 대사와 플레이어의 선택지를 자유롭게 편집하여 대화 노드를 구성해 주세요.
:::

:::WorkflowBlockItem
**NPC 지정하기**

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/dyS5ZDYKgep6QGzAV8DS8_group-13.png "Assign an NPC")

- Hierarchy 창에서 다이얼로그를 추가할 NPC 오브젝트를 클릭합니다.
- Inspector 창에서 해당 오브젝트에 `ZepetoNPC` Component가 있는지 확인해 주세요.
- NPC Dialogue Helper의 'NPC' 항목에 대화를 적용할 NPC를 드래그하여 넣어주세요.
:::

:::WorkflowBlockItem
**다이얼로그 할당 및 Export**

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/YLATe_VGG3v3r2j3L9CWm_group-15.png "Assignment and Export")

- Dialogue Helper의 **Dialogue 항목**을 클릭해 방금 만든 다이얼로그 에셋을 연결합니다.
- 적용이 완료되면 월드에서 동작하도록 **Export** 버튼을 클릭해 주세요.
:::

:::WorkflowBlockItem
**Inspector 최종 점검**
해당 NPC의 Inspector 창(`ZepetoNPC` Component)에서 설정이 올바른지 점검합니다.

- **NPC&#x20;**: 해당하는 NPC 에셋이 맞는지 확인합니다.
- **Dialogue Id** : 선택한 다이얼로그 에셋과 Dialogue Id의 문자열이 일치하는지 확인합니다.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/DCql1JOw-kbQHgSVAnpfA_group-10.png "Final Check")
:::
::::

:::hint{type="success"}
**TIPs**

- 동일한 NPC 다이얼로그 에셋을 다수의 NPC에 재사용할 수 있습니다.
- 작업한 대사 내용이 실제 게임에 정상적으로 반영되도록, 다이얼로그를 수정했다면 **수시로 Export**를 진행해 주세요.
:::

:::hint{type="danger"}
**FAQ**

- **다이얼로그가 설정한 대로 작동하지 않을 때:** Export를 진행했는지, Dialogue Panel과 Dialogue Id가 Inspector에 정확하게 들어갔는지 확인해 보세요.
- **툴에서 NPC 정보가 안 바뀔 때:** Dialogue Helper 창에서 **Refresh** 버튼을 누르거나, Hierarchy에서 NPC를 다시 클릭해 보세요.
:::



# 3. Vehicle 오브젝트

## Vehicle&#x20;

Vehicle 테마의 공식 차량을 월드에 배치하면 플레이어가 탑승하고 운전할 수 있어요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/AXa4Fg1gfAXhG7-xvhk_o-20250925-071339.png)

:::hint{type="danger"}
같은 차량을 Scene에 여러 개 배치할 때 같은 이름이 있으면 오류가 생길 수 있으니, 이름을 변경해 주세요.
:::

****

- 차량 별로 속도를 바꿀 수 있어요. 차량 별 속도를 달리해서 레이싱 게임을 만들어보세요.&#x20;
  - 속도 설정 위치
    - **Assets/BuilditTemplate/Themes/ZepetoAsset\_Vehicle/Settings** 폴더로 이동해보세요.
    - 차량 별로 스크립트 파일을 선택하면 우측에 값을 수정할 수 있는 인스펙터가 있습니다.&#x20;
  - 속도 설정
    - `rotateAngle PerFrame`: 핸들을 얼마나 빠르게 돌릴 수 있는지 (핸들링 민감도)
    - `accSpeedPer Frame`: 차가 얼마나 빠르게 가속하는지
    - `decreaseSpeedPer Frame`: 차가 얼마나 빠르게 감속하는지
    - `magnification`: 차의 기본 속도
    - `backMagnification`: 후진할 때의 속도
    - `boostMagnification`: 부스터를 썼을 때의 속도
    - `boostDuration`: 부스터가 얼마나 오랫동안 지속되는지

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/ugijVAXP2BoqfiCTBYRYT-20250926-055419.png)

**응용팁**

- 차량 하위의 외형 담당 오브젝트를 교체해서 다른 모습의 탈 것으로 바꿀 수 있어요.
  - 색다른 오브젝트를 타고 다니게 해보세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/dAaOKzaNHJGj1asY9Xopq-20250925-073225.png)



## vehicle\_vendor

Vehicle 테마 내 vehicle\_vendor를 월드에 배치하면 플레이어가 vendor 오브젝트와 인터렉션해서 차량을 불러올 수 있어요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/vR4Gk3N4-UedsM9E1tAt--20250925-073522.png)

- vendor 구성
  - `Booth`: vendor 의 모양을 정할 수 있어요.
  - `Popup`: 플레이어가 vendor 의 버튼을 눌렀을 때 화면에 나타나는, 차를 고르는 창이에요.&#x20;
  - `SpawnLocation`:  차가 어디에 나타날지 정할 수 있어요.



## AdVehicleSpawner

Utility 테마 내 AdVehicleSpawner를 배치하면 플레이어가 광고를 보고 차량에 탑승할 수 있어요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/uqviCrOh2sXMSDFc7OacZ-20250925-073530.png)

- 주의사항
  - 광고 보상 차량은 플레이어가 운전하는 동안에만 유지됩니다.
  - 차에서 내리면, 차는 바로 사라져요.
- Spawner 구성
  - `Vehicle Prefab`: 광고 보상으로 어떤 차량을 제공할지 정할 수 있어요.
  - `Spawn Point`: 광고를 보고 난 후에 차가 어디에 나타날지 정할 수 있어요.
  - `Life Time`: 차가 사라지기까지의 시간을 정할 수 있어요. 시간을 '0초'로 설정하면, 차에서 내리기 전까지 계속 탈 수 있어요.



# 4. 점프맵 필수템 추가하기

:::hint{type="success"}
**아래 영상을 따라하고, 점프맵에 다양한 오브젝트를 추가해보세요!**

**언어별 자막이 지원되니, 자막을 키고 시청해주세요!**
:::

::embed[]{url="https://youtu.be/MhQ4OnuvHKY"}

:::BlockQuote
📌 **아래에서 원하는 오브젝트를 클릭해보세요!**
:::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
[움직이는 발판 사용하기](./#--)&#x20;

[시한 폭탄](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[버프 발판](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[커졌다 작아지는 발판](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[튀어오르는 발판](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[깜빡이는 발판](docId:9prnC6EA2T9b8-z39xafG)&#x20;
:::

:::VerticalSplitItem
[컨베이어 벨트](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[회전하는 발판](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[떨어지는 발판](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[닿으면 죽는 함정](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[체크포인트](docId:9prnC6EA2T9b8-z39xafG)&#x20;
:::
::::

## 움직이는 발판 사용하기

**MovingPlatform** 오브젝트는 점프맵에서 유용하게 사용되는 움직이는 발판입니다. 캐릭터가 올라탈 수 있고 움직이는 궤적과 속도를 편리하게 세팅할 수 있어요.

자동으로 멀티플레이 동기화가 되어 있어서 방에 접속한 사람들에게 동일한 움직임이 보여집니다. 

자식 객체인 MovingPlatformManager에서 속성을 설정할 수 있습니다.

- **Sync Type** : 동기화 설정 프로퍼티입니다.
  - Sync : 멀티플레이 동기화를 사용합니다. 
  - NoneSync : 동기화를 사용하지 않습니다. 
- **Tween Type**: DOTWeen이 어떻게 왕복 운동 할 것인지 type 프로퍼티입니다.
  - Circulation : 원형으로 순환합니다. 1 -> 2 -> 3 -> 4 -> 1 -> 2 -> 3 -> 4
  - Linear은 선형으로 왔던 길을 되돌아갑니다. 1 -> 2 -> 3 -> 4 -> 3 -> 2 -> 1
  - TeleportFirstPoint은 끝 지점에 도달 시 첫 지점으로 순간이동 해서 다시 순환합니다. 1 -> 2 -> 3 -> 4 -> 1(teleport)
- **Loop Type**: 몇번 순환할 것인지에 대한 type 프로퍼티입니다.
  - Repeat : 계속 반복합니다.
  - JustOneWay : 편도 한번만 동작합니다.
  - JustOneRoundTrip : 왕복 한번만 동작합니다.
- **Sync Extrapolation** : SyncExtrapolation은 서버 지연의 시간만큼을 고려해서 위치를 추가로 계산합니다.
  - default : true
- **Tween Position**
  - 발판이 움직일 localPositon 좌표를 입력합니다. 발판은 Tween Type과 입력한 좌표의 순서대로 움직이게 됩니다.
  - 시작-끝 지점을 위해 최소 2개 이상의 좌표가 세팅되어야 합니다.   
- **Move Speed** : 오브젝트의 이동 속도입니다.

MovingPlatform Object의 외형을 수정해서 나만의 컨셉으로 디자인할 수 있습니다. 

- **오브젝트 외형 변경**: 외형을 담당하는 자식 오브젝트를 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 


::Image[]{src="https://api.archbee.com/api/optimize/BtCo2cIFh9h5Mo0EP64o_-UWN2-Nf9GSPizhqtxtm1o-20241030-020642.png" size="50" width="381" height="817" position="center" darkWidth="381" darkHeight="817" showCaption="false"}



## 시한 폭탄

**BombTrap**은 캐릭터가 닿으면 폭발하는 트랩 오브젝트입니다.

폭발이 발생했을 때 캐릭터가 폭발 범위 내에 있다면, 마지막 체크포인트 또는 SpawnPoint 위치로 이동됩니다.

- **Fuse Duration**: 폭탄에 불이 붙은 뒤 폭발까지 걸리는 시간 (단위: 초)
- **Explosion Range**: 폭발이 적용되는 범위
- **Show Timer**: 해당 필드를 체크하면, 오브젝트 위에 폭발까지 남은 시간이 표시됩니다.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/O-18MDFU1LpXJgoU_niD__group-2471.png)



## 버프 발판

**BuffPanel**은 캐릭터가 위에 올라섰을 때 이동 속도와 점프 파워를 변경해주는 오브젝트입니다.

맵 곳곳에 배치하여 특정 구간에서 캐릭터의 능력을 강화하거나 제한하는 등 다양한 연출에 활용해보세요.

- **Walk Speed**: 캐릭터가 오브젝트 위에서 걷는 속도
- **Run Speed**: 캐릭터가 오브젝트 위에서 달리는 속도
- **Jump Power**: 오브젝트 위 캐릭터의 점프 파워

:::hint{type="success"}
**✏️ Tip**

- 캐릭터의 걷거나 뛰는 속도를 빠르게 하고 싶다면 10, 20과 같은 양수 값을, 느리게 하고 싶다면 -3과 같은 음수 값을 입력해보세요.
- 구간별로 속도를 바꿔서 미션 구간이나 퍼즐 요소 등으로 자유롭게 응용해 보세요.
:::

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/fC7gPycpV4LUMqnIEn16S_group-2472.png)



## 커졌다 작아지는 발판

**ScaleTrap**은 일정한 주기로 작아졌다 커졌다를 반복하는 플랫폼입니다.

점프맵이나 타이밍이 중요한 코스에 배치해 다양한 난이도를 연출해 보세요.

- **Timeout**: 오브젝트가 최대 크기로 커진 상태에서 유지되는 시간 (단위: 초)
- **Speed**: 오브젝트가 커졌다 작아지는 속도

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/Ljp2ymW5ssZd-T481JQPV_group-2473-1.png)



## 튀어오르는 발판

**SpringPlatform**은 일정 시간 간격으로 캐릭터를 자동으로 점프시키는 플랫폼으로, 캐릭터가 아무 조작 없이도 튕겨 올라가게 됩니다.

- **Jump Powe**r: 캐릭터를 위로 튕겨 올리는 힘
- **Delay Jump Timer**: 각 점프 사이의 간격 (단위: 초)

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/V5VGGBavTodD5Mpit2tSU_group-2474-1.png)



## 깜빡이는 발판

**BlinkingPlatform**은 일정 시간 나타났다가 사라지기를 반복하는 오브젝트입니다.

- **Visible Time**: BlinkingPlatform이 나타나는 시간(초)을 변경할 수 있습니다.
- **Invisible Time**: BlinkingPlatform이 사라지는 시간(초)을 변경할 수 있습니다.
- **오브젝트 외형 변경:** 외형을 담당하는 자식 오브젝트인 Model을 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 외형을 변경할 경우 Collider가 바뀐 외형과 맞도록 Inspector 창에서 Collider의 크기와 위치를 수정해주세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/u9FjZnnStwwAYh7219bhr_image.png)



## 컨베이어 벨트

**Conveyor** 오브젝트는 캐릭터가 마치 컨베이어 벨트 위에 서 있는 것처럼 움직이게 해줍니다.

캐릭터가 Conveyor 위에 서면 설정된 속도로 앞으로 나아갑니다.

캐릭터가 Conveyor 위에서 화살표 방향으로 움직이면 걷거나 뛰는 속도가 빨라집니다.

반대로 화살표 반대 방향으로 움직이면 걷거나 뛰는 속도가 느려집니다.

- **Conveyor Speed**: 컨베이어가 움직이는 속도를 변경할 수 있습니다.
- **오브젝트 외형 변경:** 외형을 담당하는 자식 오브젝트인 Model을 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 외형을 변경할 경우 Collider가 바뀐 외형과 맞도록 Inspector 창에서 Collider의 크기와 위치를 수정해주세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/Cj3CkUWs-17yEKYDu7V0l_image.png)



## 회전하는 발판

**(1) 캐릭터가 함께 회전**

**RotatingPlatform**은 캐릭터가 올라탈 수 있는 회전하는 플랫폼입니다.

- **x Speed**: RotatingPlatform이 x축 방향으로 회전하는 속도를 변경할 수 있습니다.
- **y Speed**: RotatingPlatform이 y축 방향으로 회전하는 속도를 변경할 수 있습니다.
- **z Speed**: RotatingPlatform이 z축 방향으로 회전하는 속도를 변경할 수 있습니다.
- **오브젝트 외형 변경:** 외형을 담당하는 자식 오브젝트인 Model을 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 외형을 변경할 경우 Collider가 바뀐 외형과 맞도록 Inspector 창에서 Collider의 크기와 위치를 수정해주세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/pnrBU4TQkPcLBCbmxE_JT_image.png)



**(2) 캐릭터는 그대로 있고, 오브젝트만 회전**

**Rotator**는 단순히 회전하는 오브젝트입니다. 캐릭터가 올라탔을 때 캐릭터를 붙잡아둘 수 없으므로, 장식 용도로 사용할 수 있습니다.&#x20;

- **x Speed**: Rotator가 x축 방향으로 회전하는 속도를 변경할 수 있습니다.
- **y Speed**: Rotator가 y축 방향으로 회전하는 속도를 변경할 수 있습니다.
- **z Speed**: Rotator가 z축 방향으로 회전하는 속도를 변경할 수 있습니다.
- **오브젝트 외형 변경:** 외형을 담당하는 자식 오브젝트인 Model을 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 외형을 변경할 경우 Collider가 바뀐 외형과 맞도록 Inspector 창에서 Collider의 크기와 위치를 수정해주세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/ULA7kKiMecYUB_puPCWMx_image.png)



## 떨어지는 발판

**FallingPlatform**은 캐릭터와 닿고 일정 시간이 지나면 아래로 떨어지는 오브젝트입니다.

- **Duration**: 캐릭터와 닿은 후 떨어지지 않고 머무는 시간(초)을 변경할 수 있습니다.
- **Falling Speed**: FallingPlatform이 떨어지는 속도를 변경할 수 있습니다.
- **Falling Distance**: FallingPlatform이 떨어지는 거리를 변경할 수 있습니다.
- **오브젝트 외형 변경:** 외형을 담당하는 자식 오브젝트인 Model을 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 외형을 변경할 경우 Collider가 바뀐 외형과 맞도록 Inspector 창에서 Collider의 크기와 위치를 수정해주세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/7znmU_0kgvIchVbae5KOY_image.png)



## 닿으면 죽는 함정

### (1) 기본 함정

**TrapObj**는 캐릭터가 닿았을 때 캐릭터를 이동시킵니다.

활성화된 CheckpointPlatform이 있는 경우 가장 최근 Checkpoint 위치로 이동시키고, 없는 경우 SpawnPoint로 이동시킵니다.

- **오브젝트 외형 변경:** 외형을 담당하는 자식 오브젝트인 Model을 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 외형을 변경할 경우 Collider가 바뀐 외형과 맞도록 Inspector 창에서 Collider의 크기와 위치를 수정해주세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/pyAZf8zPqLzKRPp34q-zt_image.png)



### (2) 움직이는 함정

**TrapMovingCube**는 startPoint에서 endPoint로, endPoint에서 startPoint로의 움직임을 반복하며, 캐릭터가 닿았을 때 캐릭터를 이동시킵니다.

활성화된 CheckpointPlatform이 있는 경우 가장 최근 Checkpoint 위치로 이동시키고, 없는 경우 SpawnPoint로 이동시킵니다.

- **startPoint**: Hierarchy 창에서 startPoint 오브젝트를 선택하여 위치를 이동시키면 TrapMovingCube의 이동 경로의 시작 지점을 변경할 수 있습니다.
- **endPoint**: Hierarchy 창에서 endPoint 오브젝트를 선택하여 위치를 이동시키면 TrapMovingCube의 이동 경로의 끝나는 지점을 변경할 수 있습니다.
- **Speed**: Inspector 창에서 TrapMovingCube가 움직이는 속도를 변경할 수 있습니다.
- **오브젝트 외형 변경:** 외형을 담당하는 자식 오브젝트인 Model을 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 외형을 변경할 경우 Collider가 바뀐 외형과 맞도록 Inspector 창에서 Collider의 크기와 위치를 수정해주세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/IwCJIOIRZHx4kZOBYZ0ut_image.png)



### (3) 흔들리는 추 함정

**TrapPendulum**은 좌우로 시계추처럼 움직이는 오브젝트입니다.&#x20;

- **Amplitude**: TrapPendulum이 움직이는 높이를 변경할 수 있습니다.
- **Speed**: TrapPendulum이 움직이는 속도를 변경할 수 있습니다.
- **Enable Kill**: 해당 필드가 체크되어 있으면 캐릭터가 TrapPendulum의 아랫쪽 구와 닿았을 때 캐릭터를 이동시킬 수 있습니다. 활성화된 CheckpointPlatform이 있는 경우 가장 최근 Checkpoint 위치로 이동시키고, 없는 경우 SpawnPoint로 이동시킵니다.
- **오브젝트 외형 변경:** 외형을 담당하는 자식 오브젝트인 Model을 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 외형을 변경할 경우 Collider가 바뀐 외형과 맞도록 Inspector 창에서 Collider의 크기와 위치를 수정해주세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/K1KKPX_B2wcUJlmgN5XaF_image.png)



### (4) 회전하는 함정 (가로)

**TrapRotatingHorizontal**은 가로로 회전하는 오브젝트입니다. 캐릭터가 하얀색 바와 닿았을 때 캐릭터를 이동시킵니다.

활성화된 CheckpointPlatform이 있는 경우 가장 최근 Checkpoint 위치로 이동시키고, 없는 경우 SpawnPoint로 이동시킵니다.

- **Rotation Speed**: TrapRotatingHorizontal이 회전하는 속도를 변경할 수 있습니다.
- **오브젝트 외형 변경:** 외형을 담당하는 자식 오브젝트인 Model을 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 외형을 변경할 경우 Collider가 바뀐 외형과 맞도록 Inspector 창에서 Collider의 크기와 위치를 수정해주세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/piVKL9o6Fy-lHAGfA0FXa_image.png)



### (5) 회전하는 함정 (세로)

**TrapRotatingVertical**은 세로로 회전하는 오브젝트입니다. 캐릭터가 하얀색 바와 닿았을 때 캐릭터를 이동시킵니다.

활성화된 CheckpointPlatform이 있는 경우 가장 최근 Checkpoint 위치로 이동시키고, 없는 경우 SpawnPoint로 이동시킵니다.

- **Rotation Speed**: TrapRotatingVertical이 회전하는 속도를 변경할 수 있습니다.
- **오브젝트 외형 변경:** 외형을 담당하는 자식 오브젝트인 Model을 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 외형을 변경할 경우 Collider가 바뀐 외형과 맞도록 Inspector 창에서 Collider의 크기와 위치를 수정해주세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/B46WMGHxH34OtDskfo6oC_image.png)



### (6) 가시가 튀어나오는 장애물

**SpikeTrap**은 설정한 주기에 맞춰서 가시가 튀어나오는 장애물입니다.

긴장감을 주는 장애물로 맵에 배치해 보세요.

- **Spike Active Duration** : 가시가 나와있는 시간
- **Spike Cooldown Duration** : 가시가 들어가 있는 시간

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/D-mZzojM12t1IQufTMDcH_image.png)



- **오브젝트 외형 변경:** 발판 모양 변경은 Plate 하위에 있는 외형 오브젝트를 삭제하고 원하는 외형 오브젝트를 추가하면 됩니다.
  - 그 외의 요소는 수정하지 않고 사용하는 것을 권장합니다.&#x20;

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/c4z09GPNbn7_uhFCYkjQY_image.png)



## 체크포인트

**CheckpointPlatform**은 닿으면 체크포인트로 설정되는 발판입니다.&#x20;

점프맵 제작시 스테이지 중간 중간에 배치해 주세요.

- **Index:&#x20;**&#x43;heckpointPlatform의 작동 순서를 결정하는 필드입니다.&#x20;
  - 기본 Index 값은 **0**입니다. 반드시 0보다 큰 값으로 입력해 주세요. 음수를 입력할 경우 제대로 동작하지 않습니다.&#x20;
  - 캐릭터가 방문한 CheckpointPlatform &#xC911;**&#x20;Index 값이 가장 큰 CheckpointPlatform 위치에서 리스폰**합니다.
    - Index 활용하면 플레이어가 높은 레벨을 클리어하고 다시 낮은 레벨을 방문했을 때 Checkpoint가 낮은 레벨의 Checkpoint로 변경되는 것을 방지할 수 있습니다.
  - CheckpointPlatform은 캐릭터가 **최초로 CheckpointPlatform을 방문했을 때 활성화&#x20;**&#xB429;니다. Index 값이 동일하다면 캐릭터는 **가장 최근에 활성화된 CheckpointPlatform 위치**에서 리스폰합니다.
    - 예시) 캐릭터가 1번 → 2번 → 3번 → 2번 순서대로 체크포인트를 방문한다면, 가장 최근에 방문한 2번 체크포인트가 아닌, 가장 최근에 활성화된 3번 체크포인트에서 리스폰하게 됩니다.
- **오브젝트 외형 변경:** 외형을 담당하는 자식 오브젝트인 Model을 제거하고 맵에 있는 다른 오브젝트를 같은 위치에 넣으면 외형이 변경됩니다. 외형을 변경할 경우 collider가 바뀐 외형과 맞도록 Inspector 창에서 collider의 크기와 위치를 수정해주세요.

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/kBcUImzMiT-GCxJT6262I_image.png)



# 5. 오징어 테마 활용하기

:::BlockQuote
📌 **아래에서 원하는 오브젝트를 클릭해보세요!**
:::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
[영희 오브젝트](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[투표 기능](docId:9prnC6EA2T9b8-z39xafG)&#x20;
:::

:::VerticalSplitItem
[카운트다운 타이머](docId:9prnC6EA2T9b8-z39xafG)&#x20;

[깨지는 유리 발판](docId:9prnC6EA2T9b8-z39xafG)&#x20;
:::
::::

## 영희 오브젝트

**yonghee**는 월드에 배치하면 간단한 미니게임을 플레이할 수 있는 오브젝트입니다.

- 기본 동작
  - 오브젝트가 배치된 상태에서 Play를 누르면 자동으로 동작합니다.
  - 영희 캐릭터가 나를 바라볼 때 움직이면 레이저가 나오고 쓰러집니다. 쓰러지는 모션만 취할 뿐입니다.
  - 영희 캐릭터가 뒤를 돌아보는 시간은 Inspector에서 설정이 가능합니다.
- **Min Counting Time**: 영희가 뒤돌아보고 있는 최소 시간
- **Max Counting Time**: 영희가 뒤돌아보고 있는 최대 시간
- **Paused**: 영희의 동작을 on/off 합니다. 만약 기능이 없는 오브젝트로 사용하고 싶다면 paused on으로 세팅한 후 배치해 주세요.&#x20;

![](https://api.archbee.com/api/optimize/DG7AL2Zd4MVK-IODE4H3u-v2ozUjcZPA8lj2IDzOrXu-20241226-051654.png)



## 투표 기능

**voting**은 월드에 배치하면 각각 O, X 영역에 서있는 사람의 수를 카운팅해주는 오브젝트입니다.

바닥에 배치해서 별도의 설정 없이 바로 사용이 가능합니다.

- O, X 바닥의 Collider 영역이 카운트를 인식하는 영역입니다. 크기를 조절해서 영역을 수정할 수 있습니다.

![](https://api.archbee.com/api/optimize/DG7AL2Zd4MVK-IODE4H3u-KVXOtjdTzjSP4D7E4_iSE-20241226-052157.png)



## 카운트다운 타이머

**timedisplay**는 카운트다운을 사용하게 해주는 디스플레이 오브젝트입니다.

기본 설정은 5분을 카운트다운 하게 되어 있습니다.

Inspector에서 자유롭게 카운트다운 시간을 설정할 수 있습니다.

- **MaxValue**: 카운트다운 시작 시간 (초)
- **MinValue**: 카운트다운 종료 시간 (초)
- **Interval**: 카운트다운 시 시간이 줄어드는 간격 (초)

![](https://api.archbee.com/api/optimize/DG7AL2Zd4MVK-IODE4H3u-qLIvLUD00KwfLvV_contG-20241226-052613.png)



## 깨지는 유리 발판

**breakable\_glass**는 밟거나 닿으면 사라지는 발판입니다.

점프맵의 장애물로 사용해 보세요.

- **Is Breakable**: 닿았을 때 깨지는 속성을 on/off 합니다. on일 때만 아래 속성들이 동작합니다.&#x20;
- **Auto Reset Delay**: 닿으면 **Auto Reset Delay** 에 설정된 시간 후에 자동으로 생성됩니다.
- **Has Auto Reset**: 만약 발판이 다시 사라지지 않게 하고 싶으면 **Has Auto Reset**을 off 해 주세요.

![](https://api.archbee.com/api/optimize/DG7AL2Zd4MVK-IODE4H3u-jRGPJ5Yb-LDn6fPfPbX3N-20241226-053025.png)

