---
title: 3. ออกแบบโลกของคุณด้วย Build it Unity Plug-in
slug: world-sdk-guide-th/3-build-it-unity-plug-in
docTags: 
createdAt: 2025-04-22T03:08:55.533Z
---

# 1. การเพิ่มฟีเจอร์พื้นฐาน

:::hint{type="success"}
**ลองทำตามวิดีโอด้านล่างเพื่อเพิ่มฟีเจอร์ต่างๆ ให้กับโลกของคุณโดยไม่ต้องเขียนโค้ดเลย!**

**มีซับไตเติลหลายภาษาให้บริการ อย่าลืมเปิดซับไตเติลขณะรับชมนะครับ!**
:::

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

:::BlockQuote
📌 **คลิกที่ออบเจกต์ด้านล่างที่คุณต้องการศึกษาเพิ่มเติม!**
:::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
[ออบเจกต์ Interaction](docId\:ylnXTaVPConH4aEWAMm7b)

[ตั้งค่าตำแหน่ง Spawn](docId\:ylnXTaVPConH4aEWAMm7b)

[เล่นเสียง](docId\:ylnXTaVPConH4aEWAMm7b)

[ตัวจับเวลา](docId\:ylnXTaVPConH4aEWAMm7b)

[สุ่มตัวเลข](docId\:ylnXTaVPConH4aEWAMm7b)
:::

:::VerticalSplitItem
[ออบเจกต์ Teleport](docId\:ylnXTaVPConH4aEWAMm7b)

[เล่น BGM](docId\:ylnXTaVPConH4aEWAMm7b)

[สร้าง Welcome Popup](docId\:ylnXTaVPConH4aEWAMm7b)

[ออบเจกต์ Reward Chest](docId\:ylnXTaVPConH4aEWAMm7b)

[ออบเจกต์ Drawing Canvas](docId\:ylnXTaVPConH4aEWAMm7b)
:::
::::

## ออบเจกต์ Interaction

ออบเจกต์ **Interaction** จะทำให้ตัวละครของคุณแสดงท่าทาง (Gesture) ที่กำหนดไว้เมื่อผู้ใช้คลิกที่ไอคอน

- **Interaction\_bed**: เล่นท่าทางตัวละครนอนลงบนเตียงอย่างเป็นธรรมชาติ
- **Interaction\_chair**: เล่นท่าทางตัวละครนั่งบนเก้าอี้อย่างเป็นธรรมชาติ
- **Interaction\_dance**: เล่นท่าทางตัวละครกำลังเต้น

คุณสามารถปรับแต่งออบเจกต์ Interaction เพื่อนำไปประยุกต์ใช้ในรูปแบบต่างๆ ได้

- **เปลี่ยน Animation Clip**: หากคุณแทนที่ไฟล์แอนิเมชันใน Animation Clip ของออบเจกต์ลูก (`InteractionPoint`) ท่าทางที่แสดงเมื่อโต้ตอบก็จะเปลี่ยนไป
- **Is Snap Bone**: ตำแหน่งของตัวละครจะถูกล็อกอ้างอิงจาก Bone ที่กำหนด ตัวอย่างเช่น หากตั้งค่า Bone เป็น Foot เท้าของตัวละครจะถูกล็อกไว้ที่ตำแหน่ง `InteractionPoint` ขณะเล่นแอนิเมชัน หากนำเครื่องหมายถูกออก ตัวละครจะสามารถเคลื่อนไหวได้อย่างอิสระโดยไม่ยึดติดกับออบเจกต์
- **Body Bone**: กำหนด Bone ที่ตัวละครจะถูกล็อกเมื่อเปิดใช้งาน `Is Snap Bone`
- **เปลี่ยนรูปลักษณ์ออบเจกต์**: ลบออบเจกต์ลูกที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้วนำออบเจกต์อื่นจากในแผนที่มาวางในตำแหน่งเดียวกันเพื่อเปลี่ยนหน้าตาของมัน
- **เปลี่ยนตำแหน่งไอคอน Interaction**: หากคุณเปลี่ยนรูปลักษณ์ของออบเจกต์แล้ว ให้ปรับตำแหน่งของออบเจกต์ลูก `IconPos` ให้เข้ากับดีไซน์ใหม่ของคุณด้วย

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

## ตั้งค่าตำแหน่ง Spawn

เมื่อใช้ออบเจกต์ **SpawnPoint** คุณสามารถกำหนดตำแหน่งที่ตัวละคร ZEPETO จะเกิด (Spawn) ได้พอดีเมื่อโลกเริ่มต้นขึ้น

- หากไม่มีออบเจกต์ Spawn ใน Scene ตัวละคร ZEPETO จะเกิดที่พิกัด x=0, y=0, z=0
- หากมีออบเจกต์ Spawn หลายจุด ตัวละคร ZEPETO จะสุ่มเลือกหนึ่งจุดและเกิดที่ตำแหน่งนั้น

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

## เล่นเสียง

ออบเจกต์ **SFX** จะเล่นเสียงที่กำหนดไว้เมื่อผู้ใช้คลิกไอคอน วางออบเจกต์ลงใน Scene แล้วปรับการตั้งค่าในหน้าต่าง Inspector

- **AudioClip**: คุณสามารถระบุคลิปเสียงได้ในหน้าต่าง Inspector โดยใช้ไฟล์เสียงรูปแบบ .mp3 หรือ .wav
- **IconPos**: คุณสามารถปรับตำแหน่งของปุ่มที่ผู้ใช้จะต้องสัมผัสได้

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

## ตัวจับเวลา

ออบเจกต์ **Timer** จะแสดง UI จับเวลาและเริ่มบันทึกเวลาเมื่อผู้ใช้คลิกที่ออบเจกต์ "เริ่ม (Start)" และเมื่อผู้ใช้คลิกที่ออบเจกต์ "ถึงเส้นชัย (Arrival)" UI จับเวลาจะหายไปและมีข้อความแสดงความสำเร็จปรากฏขึ้น

คุณสามารถปรับแต่งรูปลักษณ์ของออบเจกต์ Timer และตำแหน่งปุ่มโต้ตอบให้เข้ากับคอนเซปต์โลกของคุณได้

- **เปลี่ยนรูปลักษณ์ออบเจกต์**: ลบออบเจกต์ลูกที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้วนำออบเจกต์อื่นจากในแผนที่มาวางในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์
- **เปลี่ยนตำแหน่งไอคอน Interaction**: หากคุณเปลี่ยนรูปลักษณ์ของออบเจกต์แล้ว ให้ปรับตำแหน่งของออบเจกต์ลูก `IconPos` ให้เหมาะสมตามไปด้วย

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

## สุ่มตัวเลข

เมื่อใช้ออบเจกต์ **Roulette** ระบบจะทำการสุ่มตัวเลขเมื่อผู้ใช้คลิกไอคอน และจะแสดงผลลัพธ์ในหน้าต่างแชทของ ZEPETO

- **ตั้งค่าช่วงตัวเลข**: เลือกออบเจกต์ Roulette และปรับตัวเลขต่ำสุด-สูงสุดได้ในหน้าต่าง Inspector

คุณสามารถปรับแต่งรูปลักษณ์ของออบเจกต์ Roulette และตำแหน่งปุ่มโต้ตอบให้เข้ากับคอนเซปต์ของคุณได้เช่นกัน

- **เปลี่ยนรูปลักษณ์ออบเจกต์**: ลบออบเจกต์ลูกที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้วนำออบเจกต์อื่นจากในแผนที่มาวางในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์
- **เปลี่ยนตำแหน่งไอคอน Interaction**: หากคุณเปลี่ยนรูปลักษณ์ของออบเจกต์แล้ว ให้ปรับตำแหน่งของออบเจกต์ลูก `IconPos` ให้เหมาะสมตามไปด้วย

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

## ออบเจกต์ Teleport

ออบเจกต์ **Teleport** จะช่วยเทเลพอร์ตผู้ใช้ไปยังตำแหน่งที่กำหนดในพริบตาเมื่อคลิกที่ไอคอน

- **จุดหมายปลายทาง (Destination Point)**: คุณสามารถตั้งค่าจุดหมายปลายทางได้โดยการย้ายออบเจกต์ลูก `destination` ไปยังตำแหน่งที่คุณต้องการ

คุณสามารถปรับแต่งรูปลักษณ์ของออบเจกต์ Teleport และตำแหน่งปุ่มโต้ตอบให้เข้ากับคอนเซปต์โลกของคุณได้

- **เปลี่ยนรูปลักษณ์ออบเจกต์**: ลบออบเจกต์ลูกที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้วนำออบเจกต์อื่นจากในแผนที่มาวางในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์
- **เปลี่ยนตำแหน่งไอคอน Interaction**: หากคุณเปลี่ยนรูปลักษณ์ของออบเจกต์แล้ว ให้ปรับตำแหน่งของออบเจกต์ลูก `IconPos` ให้เหมาะสมตามไปด้วย

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



## เล่น BGM

การวางออบเจกต์ **BGM** ไว้ใน Scene จะทำให้เพลงพื้นหลังเล่นขึ้นมา โปรดวางเพียงหนึ่งออบเจกต์ต่อ Scene เท่านั้น

- **AudioClip**: คุณสามารถกำหนดคลิปเสียงได้ในหน้าต่าง Inspector โดยใช้ไฟล์เสียงรูปแบบ .mp3 หรือ .wav ที่นี่

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

ผู้ใช้สามารถเปิดหรือปิดเพลงพื้นหลังได้โดยการแตะที่ไอคอน BGM ทางด้านขวาของหน้าจอ

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

## สร้าง Welcome Popup

ออบเจกต์ **Popup** คือหน้าต่างที่จะปรากฏขึ้นเมื่อผู้ใช้เข้ามาในโลก การคลิกปุ่มภายในป๊อปอัปจะปิดหน้าต่างนั้นโดยอัตโนมัติ

ใช้หน้าต่างป๊อปอัปนี้เพื่อแนะนำโลกของคุณหรือโปรโมตกิจกรรมพิเศษ!

:::hint{type="danger"}
**ข้อควรระวัง**

- หน้าต่าง Popup ไม่ได้ถูกวางไว้บนพื้นเหมือนออบเจกต์ทั่วไป
- ออบเจกต์นี้จะถูกวางไว้ในพื้นที่หน้าจอ UI และสามารถตรวจสอบได้ในหน้าต่าง Game
:::

เลือก Popup ใน Hierarchy แล้วแก้ไขคุณสมบัติใน Inspector คุณสามารถตรวจสอบการเปลี่ยนแปลงได้ในโหมด Play

- **Background Image**: ลากและวางรูปภาพ 2D Sprite เพื่อเปลี่ยนพื้นหลัง
- **Message**: คุณสามารถเปลี่ยนข้อความได้
- **Message Color**: คุณสามารถเปลี่ยนสีข้อความได้
- **Message Shadow**: คุณสามารถเปิด/ปิดเอฟเฟกต์เงาของข้อความได้
- **Button Title**: คุณสามารถเปลี่ยนข้อความบนปุ่มได้

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

## ออบเจกต์ Reward Chest

เมื่อวาง **Reward Chest** ไว้ในโลกของคุณ ผู้เล่นจะสามารถรับ ZEM หรือ เหรียญ (Coin) ได้ตามกิจกรรมที่กำหนด

เมื่อผู้ใช้เข้ามาในโลกที่มี 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")

- ตรรกะการทำงาน (Operation Logic)
  - ครีเอเตอร์ของโลกควรวาง Reward Chest ไว้ในตำแหน่งที่เหมาะสมในโลกของตนเอง
    - โปรดอย่าวางไว้ในตำแหน่งที่สามารถหาเจอได้ง่ายจนเกินไป
    - หากได้รับรางวัลมาง่ายเกินไป โลกของคุณอาจไม่ผ่านการตรวจสอบ หรืออาจถูกนำออกโดยไม่แจ้งให้ทราบล่วงหน้า
    - ครีเอเตอร์ของโลกก็สามารถรับรางวัลในโลกของตนเองได้เช่นกัน

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

- **Timeout** - หากคุณต้องการเพิ่มระยะเวลาที่ผู้เล่นใช้ในโลกของคุณ ลองเพิ่มเวลานับถอยหลังสั้นๆ ก่อนที่พวกเขาจะสามารถรับรางวัลได้
  - ป้อนเวลานับถอยหลัง (หน่วยเป็นวินาที) ลงในช่อง Timeout ค่าเริ่มต้นคือ 60 วินาที
    - การป้อน 0 จะทำให้ได้รับรางวัลทันทีโดยไม่ต้องรอเวลานับถอยหลัง
- **Activated Icon Color**
  - ก่อนที่การนับถอยหลังจะเริ่มต้นขึ้น ไอคอนโต้ตอบจะแสดงเป็นสีขาว เมื่อการนับถอยหลังเสร็จสิ้น สีของไอคอนจะเปลี่ยนเป็นสีที่คุณตั้งค่าไว้ที่นี่
- **Group id**
  - หีบสมบัติที่มี Group id เดียวกัน จะแสดงให้เห็นเพียงกล่องเดียวเท่านั้น
  - หากคุณกำหนด Group id ที่แตกต่างกัน หีบสมบัติจากแต่ละกลุ่มจะแสดงออกมากลุ่มละหนึ่งกล่อง

:::hint{type="danger"}
**ข้อควรระวัง**

- กิจกรรมแจกรางวัล ZEM/Coin จะดำเนินการโดย ZEPETO และครีเอเตอร์ไม่สามารถกำหนดค่าได้เอง
- มีการจำกัดจำนวนรางวัลที่แต่ละคนสามารถรับได้จากกิจกรรม เมื่อถึงขีดจำกัดแล้ว จะไม่สามารถรับรางวัลได้อีก
- หากไม่ได้อยู่ในช่วงเวลากิจกรรม Reward Chest จะไม่ปรากฏให้เห็น และไม่สามารถรับรางวัลได้
:::



## ออบเจกต์ Drawing Canvas

**DrawingCanvas** คือออบเจกต์ผ้าใบที่ช่วยให้ผู้เล่นสามารถวาดรูปในโลกของคุณได้อย่างอิสระ

ฟีเจอร์นี้รองรับ **การซิงโครไนซ์มัลติเพลเยอร์** โดยอัตโนมัติ ทำให้คุณสามารถวาดรูปและพูดคุยสื่อสารกับผู้เล่นคนอื่นๆ ที่อยู่ในโลกเดียวกันได้แบบเรียลไทม์

ลองนำไปประยุกต์ใช้ในโลกของคุณด้วยไอเดียสุดสร้างสรรค์ เช่น สร้างพื้นที่ให้คุณและเพื่อนๆ ได้มาขีดเขียนเล่นกันอย่างอิสระ หรือจะสร้างเกมควิซทายภาพจากรูปวาดก็สนุกไปอีกแบบ!

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

- เลือกออบเจกต์ **DrawingCanvas** จาก **Build it Asset Browser > Utility**
- นำไปวางในตำแหน่งที่คุณต้องการภายในหน้าต่าง **Scene**

::Image[]{src="https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/uKoutYwwkaFm2C5KN0Ykh_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/DRXIY4uCfxSj8gJiCC5tB_image-18.png" size="80" isUploading="false" width="893" height="498" darkWidth="893" darkHeight="498" alt="DrawingCanvas" showCaption="false"}

ผู้เล่นที่เข้ามาเยือนโลกของคุณสามารถเดินเข้าไปใกล้ๆ ผ้าใบและสัมผัสประสบการณ์การวาดรูปด้วยฟีเจอร์ต่างๆ ได้ดังนี้:

- **เข้าสู่โหมดวาดรูป**: เมื่อคุณเดินเข้าไปใกล้ผ้าใบ จะมีไอคอน UI สำหรับวาดรูปปรากฏขึ้น การกดที่ไอคอนนั้นจะเป็นการเริ่มโหมดวาดรูป
- **การตั้งค่าแปรงและสี**:
  - **ปรับขนาดแปรง:** คุณสามารถใช้ Bar ทางด้านซ้ายเพื่อปรับขนาดของแปรงและเลือกสีที่ต้องการได้อย่างอิสระ
  - **ปรับความเข้มของสี:** คุณสามารถเลื่อน Bar ทางด้านขวาเพื่อปรับความอิ่มตัวของสีได้
- **ยางลบ**: ใช้เครื่องมือยางลบเพื่อลบและแก้ไขส่วนที่วาดผิดได้อย่างง่ายดาย
- **ถังสี**: ใช้แปรงวาดเส้นเพื่อสร้างพื้นที่ปิด จากนั้นแตะที่ด้านในของพื้นที่นั้น ระบบจะเทสีที่คุณเลือกลงไปให้เต็มพื้นที่ในคราวเดียว
- **เลิกทำ (Undo) และ ทำซ้ำ (Redo)**: คุณสามารถย้อนกลับไปยังขั้นตอนก่อนหน้า หรือกู้คืนการทำงานที่เพิ่งเลิกทำไปได้ อย่างไรก็ตาม โปรดทราบว่าฟีเจอร์นี้รองรับการย้อนกลับสูงสุดเพียง 3 ขั้นตอนเท่านั้น
- **ลบทั้งหมด**: คุณสามารถลบทุกสิ่งที่วาดไว้บนผ้าใบออกได้ทั้งหมดในครั้งเดียว

:::hint{type="success"}
**กฎการใช้งานมัลติเพลเยอร์**

- **วาดได้เพียงคนเดียวต่อหนึ่งผ้าใบ:** เมื่อผู้เล่นเริ่มวาดรูปบนผ้าใบ ผ้าใบนั้นจะถูกครอบครองโดยผู้เล่นคนดังกล่าวทันที ไอคอนวาดรูปจะถูกซ่อนจากผู้เล่นคนอื่นๆ ดังนั้นหากมีคนวาดรูปบนผ้าใบแล้ว ผู้เล่นคนอื่นจะไม่สามารถวาดเพิ่มเติมลงไปได้
- **วาดรูปต่อบนผ้าใบของคุณได้ทุกเมื่อ:** สำหรับผ้าใบที่คุณเป็นคนวาด ไอคอนจะยังคงแสดงอยู่เสมอ ทำให้คุณสามารถกลับมาวาดรูปต่อได้อย่างอิสระ
- **ผ้าใบจะถูกรีเซ็ตเมื่อออกจากห้อง:** หากผู้เล่นที่วาดรูปออกจากห้อง (Room) ไป รูปที่วาดไว้บนผ้าใบจะถูกลบออก และผ้าใบจะกลับสู่สถานะว่างเปล่าเพื่อให้ทุกคนสามารถเริ่มวาดใหม่ได้อีกครั้ง
- **จำนวนที่แนะนำในการจัดวาง (Optimization):** ในทางทฤษฎีจะไม่มีการจำกัดจำนวนผ้าใบที่คุณสามารถจัดวางได้ แต่เพื่อความลื่นไหลของโลก (World) เราขอแนะนำให้วางผ้าใบไม่เกิน 10 ชิ้นต่อหนึ่งโลก
:::



# 2. ออบเจกต์ NPC

:::BlockQuote
📌 **คลิกที่ออบเจกต์ด้านล่างที่คุณต้องการศึกษาเพิ่มเติม!**
:::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
[ออบเจกต์ NPC พื้นฐาน](docId\:ylnXTaVPConH4aEWAMm7b)

[ออบเจกต์ NPC แบบโต้ตอบ](docId\:ylnXTaVPConH4aEWAMm7b)
:::

:::VerticalSplitItem
[ตั้งค่า NPC Dialogue](docId\:ylnXTaVPConH4aEWAMm7b)
:::
::::

## ออบเจกต์ NPC พื้นฐาน

คุณสามารถสร้างตัวละคร NPC ได้โดยการป้อน Zepeto ID นำออบเจกต์ NPC ไปวางใน Scene และเปลี่ยนการตั้งค่าได้ในหน้าต่าง Inspector

NPC จะไม่ปรากฏในโหมด Edit (แก้ไข); แต่จะปรากฏขึ้นก็ต่อเมื่อคุณกด Play เท่านั้น

ใช้คุณสมบัติด้านล่างเพื่อตั้งค่า NPC ของคุณ

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

- **Zepeto ID**: ป้อน ID บัญชี ZEPETO ที่จะใช้งาน
- **Dialogue**
  - **Has Speech Bubble**: หากเปิดใช้งาน จะมีบอลลูนข้อความปรากฏขึ้นเมื่อผู้เล่นเข้าใกล้ NPC
  - **Speech Bubble Text**: ป้อนข้อความสำหรับบอลลูนคำพูดของตัวละคร NPC
    - คุณสามารถลงทะเบียนข้อความบอลลูนได้หลายข้อความ
    - คลิกปุ่ม + เพื่อเพิ่มข้อความใหม่ หรือปุ่ม - เพื่อลบข้อความที่มีอยู่
  - **Randomize Dialogue**: คุณสามารถตั้งค่าให้ข้อความบอลลูนของ NPC แสดงขึ้นมาแบบสุ่มลำดับได้
    - หากไม่ได้ทำเครื่องหมาย ข้อความจะถูกแสดงตามลำดับ โดยเริ่มจากข้อความแรก (Element 0)
  - **Speech Bubble Text Duration:** กำหนดระยะเวลา (เป็นวินาที) ที่บอลลูนข้อความจะค้างอยู่บนหน้าจอ
  - **Speech Bubble Prefab:** ดีไซน์ Prefab สำหรับบอลลูนข้อความ
  - **Speech Bubble Y Offset:** ปรับตำแหน่งแกน Y (ความสูง) ของบอลลูนข้อความโดยอิงจากศีรษะของตัวละคร
- **Animations**
  - **Dialogue Animations:** รายการแอนิเมชันของตัวละครที่จะเล่นควบคู่ไปกับบทสนทนา
    - แอนิเมชันจะเล่นตามลำดับที่สอดคล้องกับ `Speech Bubble Text`
    - หากไม่ได้กำหนดแอนิเมชันสำหรับลำดับบทสนทนานั้น แอนิเมชันแรก (Element 0) ในรายการจะถูกใช้เป็นค่าเริ่มต้น
  - **Idle Animation:** หากตั้งค่าปิด `Enable Movement` แอนิเมชันนี้จะทำงานในขณะที่ตัวละครยืนอยู่เฉยๆ
- **Movement**
  - **Enable Movement:** หากเปิดใช้งาน ตัวละครจะเดินเตร่ไปมาแบบสุ่มภายในพื้นที่ที่กำหนด
    - หากคุณต้องการให้ NPC ยืนอยู่กับที่ ให้ปิดตัวเลือกนี้
  - **Movement Area:** กำหนดพื้นที่ขอบเขตการเดินของ NPC โดยใช้คอมโพเนนต์ Box Collider
    - คุณสามารถปรับแต่งระยะการเดินของ NPC ได้โดยปรับขนาดและตำแหน่งของ Box Collider
    - เส้นขอบของ Box Collider จะหายไปในระหว่างโหมด Play
  - **Min Idle Time:** เวลาหยุดพักรอน้อยที่สุด (เป็นวินาที) หลังจากการเคลื่อนที่แต่ละครั้งก่อนจะเริ่มการเคลื่อนไหวรอบใหม่
  - **Max Idle Time:** เวลาหยุดพักรอมากที่สุด (เป็นวินาที) หลังจากการเคลื่อนที่แต่ละครั้งก่อนจะเริ่มการเคลื่อนไหวรอบใหม่
- ตัวอย่างการใช้งาน

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

## ออบเจกต์ NPC แบบโต้ตอบ

![](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)

แทนที่จะเป็นการตอบคำถามสั้นๆ ธรรมดาๆ คุณสามารถสร้าง **ระบบบทสนทนาแบบต่อเนื่อง** ซึ่งเนื้อเรื่องจะแตกแขนงออกไปตามตัวเลือกที่ผู้ใช้เลือกได้

ด้วยการรองรับหลายภาษา (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 Field** : แสดง NPC ที่กำลังถูกเลือกอยู่ใน Scene ซึ่งจะอัปเดตอัตโนมัติเมื่อคุณคลิกที่ GameObject ที่มีคอมโพเนนต์ `ZepetoNPC` (หากไม่อัปเดตโดยอัตโนมัติ ให้กด **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 Field** <font color="#0C121D">\: </font>แสดงบทสนทนาที่เชื่อมโยงอยู่กับ NPC ปัจจุบัน คลิกที่นี่เพื่อเลือกและกำหนด Asset บทสนทนา (Node Graph Asset) ที่คุณต้องการได้อย่างง่ายดาย
- **Export Button** : ปุ่มนี้จะทำหน้าที่ใช้การตั้งค่าบทสนทนาของคุณเพื่อให้ทำงานได้อย่างถูกต้องในโลกจริง **คุณต้องคลิกปุ่มนี้** หลังจากที่คุณป้อนบทพูดของ NPC ทั้งหมดแล้วเพื่อสร้าง Dialogue Asset ให้เสร็จสมบูรณ์
- **Dialogue Folder** : เปิดโฟลเดอร์ที่จัดเก็บ Dialogue Asset (Node Graph Asset) ทั้งหมดที่คุณสร้างไว้
- **Create New** : สร้าง Dialogue Asset (Node Graph Asset) ขึ้นมาใหม่

:::hint{type="success"}
**Dialogue Asset (Node Graph Asset) คืออะไร?** มันคือ **ไฟล์บทสนทนา** ที่บันทึกข้อความทั้งหมดที่คุณเขียนลงไป
ไฟล์นี้มีความจำเป็นอย่างยิ่งที่จะทำให้ NPC ในโลกจริงพูดประโยคที่คุณตั้งค่าไว้
:::

### 2. การใช้ Dialogue Graph Editor (Node Editor)

เมื่อคุณคลิก **Create New** ใน **Dialogue Helper** หรือเปิด Dialogue Asset หน้าต่าง **Dialogue Graph Editor** ก็จะปรากฏขึ้น

เอดิเตอร์นี้จะช่วยให้คุณออกแบบเส้นทางการสนทนาที่ซับซ้อนได้อย่างง่ายดายด้วยการเชื่อมต่อกล่องข้อความสนทนาเข้าด้วยกัน คุณสามารถมองเห็นแผนภาพได้ชัดเจนว่าบทสนทนาจะแยกออกไปในทิศทางใดตามตัวเลือกที่คุณตั้งไว้

![](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**: แผนที่ย่อที่จะช่วยให้คุณทำความเข้าใจกระแสของบทสนทนาทั้งหมดได้อย่างรวดเร็วเมื่อโครงสร้างเริ่มซับซ้อนและมี Node เพิ่มมากขึ้น คุณสามารถใช้เพื่อดูตำแหน่งมุมมองปัจจุบันหรือกระโดดไปยังตำแหน่งที่ต้องการบนหน้าจอได้อย่างรวดเร็ว
- **Info**: แสดงคำแนะนำในการควบคุมพื้นฐานและคีย์ลัดที่จำเป็นในขณะที่ใช้งาน Dialogue Graph Editor

**ประเภท 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**: Node หลักสำหรับป้อนบทสนทนาของ NPC และคำตอบ (ตัวเลือก) ของผู้เล่น
  - **What the NPC says**: ช่องสำหรับป้อนบทสนทนาที่ NPC จะพูดบนหน้าจอ
  - **Gesture**: เลือกแอนิเมชันที่ NPC จะแสดงท่าทางในระหว่างการสนทนา
    - คุณสามารถเลือกใช้ท่าทางมาตรฐานที่มีให้ได้โดยตรงจากเมนูดรอปดาวน์
      - ท่าทางที่มีให้: **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** แล้วป้อน **ชื่อแอนิเมชันที่ตรงกันทุกประการ** ลงในช่อง **Custom Animation**
:::

:::Paragraph{listStyleType="disc" listStart="2" indent="3"}
โปรดนำไฟล์แอนิเมชันตัวละครที่คุณต้องการลิงก์ไปวางไว้ใน **โฟลเดอร์** `Resources/Animations/` ภายในโปรเจกต์ Unity ของคุณ
:::

:::hint{type="danger" indent="4"}
**ข้อควรระวัง**
เมื่อใช้งานท่าทางแบบ **Custom** หากพิมพ์ชื่อไฟล์แอนิเมชันผิด หรือไม่มีไฟล์ชื่อดังกล่าวอยู่ในโฟลเดอร์ จะมีหน้าต่างแจ้งเตือนปรากฏขึ้น และคุณจะ **ไม่สามารถทำการ Export ได้**
:::

- **Answer options**: คุณสามารถเพิ่มตัวเลือกคำตอบให้ผู้เล่นเลือกได้ 1 ถึง 3 ตัวเลือก
  - ด้วยการเชื่อมต่อ Node เข้ากับตัวเลือกแต่ละข้อ คุณสามารถสร้างเส้นทางบทสนทนาใหม่ๆ โดยพิจารณาจากการตัดสินใจของผู้ใช้
- **End Node**: ระบุจุดสิ้นสุดของการสนทนา เมื่อผู้เล่นเลือกตัวเลือกที่เชื่อมต่อมายัง Node นี้ บทสนทนาก็จะจบลง

***

**การแก้ไขและเชื่อมต่อ Graph**

คุณสามารถสร้างและเชื่อมต่อ Node บนพื้นที่ผ้าใบ (Canvas) ของบทสนทนาได้ด้วยวิธีดังนี้:

- **คลิกขวา** บนพื้นที่ว่างเพื่อสร้าง Node ใหม่ (**Create Node**) หรือคัดลอกและลบ Node ที่มีอยู่
- ลากพอร์ต **Output** ทางด้านขวาของตัวเลือก (Answer options) และนำไปเชื่อมต่อกับพอร์ต **Input** ของ Node ถัดไป เพื่อทำให้โครงสร้างการสนทนาสมบูรณ์แบบ

:::hint{type="success"}
**เคล็ดลับ (TIPs)**

คุณสามารถเลื่อนหน้าจอได้ด้วยวิธีดังต่อไปนี้:

- **การเลื่อนหน้าจอ (Navigation):**
- **คลิกเมาส์ปุ่มกลาง** (คลิกลูกกลิ้งเมาส์)
- **คลิกเมาส์ซ้าย + ปุ่ม Option/Alt (⌥)**

**การเลือกและเมนู (Selection & Menu):**

- **เลือกอันเดียว:** คลิกเมาส์ซ้าย
- **เลือกแบบกรอบสี่เหลี่ยม:** คลิกเมาส์ซ้าย (ลากเพื่อเลือกพื้นที่แบบสี่เหลี่ยม)
- **เปิดเมนู Node:** คลิกเมาส์ขวา
:::

***

**การตั้งค่าระบบรองรับหลายภาษา (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**: คลิกที่ Dialogue Asset (Node Graph Asset) ที่สร้างขึ้น แล้วดูที่หน้าต่าง Inspector เพื่อเลือกตั้งค่าภาษาที่รองรับ (อังกฤษ, เกาหลี, ญี่ปุ่น ฯลฯ)

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

- **การใช้แถบเครื่องมือของ Editor**: สลับเปลี่ยนภาษาใน **Language Selector** ที่มุมซ้ายบนของหน้าต่าง Editor เพื่อป้อนข้อความแปลของแต่ละภาษาได้โดยตรง

### 3. การสร้าง NPC Dialogue ใหม่

::::WorkflowBlock
:::WorkflowBlockItem
**การสร้าง Dialogue**

- คลิก **Create New** ในหน้าต่าง **Dialogue Helper**

::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 และตัวเลือกของผู้เล่นได้อย่างอิสระเพื่อสร้าง Node บทสนทนาของคุณ
:::

:::WorkflowBlockItem
**การกำหนด NPC**

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

- คลิกที่ออบเจกต์ NPC ที่คุณต้องการเพิ่มบทสนทนาจากหน้าต่าง Hierarchy
- ตรวจสอบให้แน่ใจว่าออบเจกต์นั้นมีคอมโพเนนต์ `ZepetoNPC` ติดอยู่แล้วในหน้าต่าง Inspector
- ลากและวาง NPC ลงในช่อง 'NPC' ของหน้าต่าง Dialogue Helper
:::

:::WorkflowBlockItem
**การกำหนด Dialogue และทำการ Export**

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

- คลิกที่ **ช่อง Dialogue** ใน Dialogue Helper เพื่อเชื่อมโยง Dialogue Asset ที่คุณเพิ่งสร้างขึ้น
- เมื่อนำไปใช้เรียบร้อยแล้ว ให้คลิกปุ่ม **Export** เพื่อให้เนื้อหาทำงานในโลกจริงได้อย่างถูกต้อง
:::

:::WorkflowBlockItem
**การตรวจสอบ Inspector ขั้นสุดท้าย**
ตรวจสอบความถูกต้องของการตั้งค่าในหน้าต่าง Inspector ของ NPC (คอมโพเนนต์ `ZepetoNPC`)

- **NPC** : ตรวจสอบว่าเลือก Asset NPC ที่ถูกต้องแล้ว
- **Dialogue Id** : ตรวจสอบให้แน่ใจว่าชื่อข้อความตรงกับ Dialogue Asset ที่คุณเลือก

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

:::hint{type="success"}
**เคล็ดลับ (TIPs)**

- คุณสามารถนำ Dialogue Asset อันเดียวกันไปใช้ซ้ำกับ NPC หลายตัวได้อย่างง่ายดาย
- เพื่อให้แน่ใจว่าการเปลี่ยนแปลงในบทสนทนาของคุณจะทำงานในเกมจริงได้อย่างถูกต้อง โปรด **กด Export บ่อยๆ** หลังจากการแก้ไขรายละเอียดของบทสนทนา
:::

:::hint{type="danger"}
**คำถามที่พบบ่อย (FAQ)**

- **เมื่อบทสนทนาไม่ทำงานตามที่กำหนดไว้:** ตรวจสอบให้แน่ใจว่าคุณได้กดคลิกปุ่ม Export แล้ว และลองตรวจสอบดูว่าได้ป้อน Dialogue Panel กับ Dialogue Id ลงใน Inspector ถูกต้องหรือไม่
- **เมื่อข้อมูล NPC ไม่อัปเดตในเครื่องมือ:** ให้กดปุ่ม **Refresh** ในหน้าต่าง Dialogue Helper หรือคลิกเลือก NPC ในหน้าต่าง Hierarchy ใหม่อีกครั้ง
:::

# 3. ออบเจกต์ยานพาหนะ (Vehicle)

## Vehicle

หากคุณวางยานพาหนะอย่างเป็นทางการจากธีม Vehicle ไว้ในโลกของคุณ ผู้เล่นจะสามารถขึ้นไปขับรถได้

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

:::hint{type="danger"}
หากคุณวางยานพาหนะที่เหมือนกันและมีชื่อเหมือนกันหลายคันใน Scene เดียวกัน อาจก่อให้เกิดข้อผิดพลาดได้ โปรดตรวจสอบให้แน่ใจว่ายานพาหนะแต่ละคันมีชื่อที่ไม่ซ้ำกัน
:::

***

- คุณสามารถปรับความเร็วให้กับยานพาหนะแต่ละคันได้ ลองสร้างเกมแข่งรถด้วยยานพาหนะที่มีความเร็วต่างกันสิ!
  - ตำแหน่งการตั้งค่าความเร็ว
    - ไปที่โฟลเดอร์ **Assets/BuilditTemplate/Themes/ZepetoAsset\_Vehicle/Settings**
    - เลือกไฟล์สคริปต์ของยานพาหนะ แล้วคุณจะสามารถแก้ไขค่าต่างๆ ได้ที่ช่อง Inspector ทางด้านขวา
  - การตั้งค่าความเร็ว
    - `rotateAnglePerFrame`: ความเร็วในการหมุนพวงมาลัย (ความไวในการควบคุมรถ)
    - `accSpeedPerFrame`: อัตราเร่งของรถ
    - `decreaseSpeedPerFrame`: อัตราการลดความเร็วของรถ (เบรก)
    - `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_vendor` จากธีม Vehicle ไว้ในโลกของคุณ จะช่วยให้ผู้เล่นสามารถโต้ตอบกับออบเจกต์จุดรับรถ และเรียกรถออกมาได้

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

- การกำหนดค่า Vendor
  - `Booth`: คุณสามารถตั้งค่ารูปร่าง/ลักษณะของร้านรับรถได้
  - `Popup`: หน้าต่างที่จะแสดงขึ้นมาบนหน้าจอเพื่อให้ผู้เล่นได้เลือกรถ เมื่อพวกเขากดที่ปุ่มของร้าน
  - `SpawnLocation`: คุณสามารถกำหนดตำแหน่งที่รถจะเกิด (Spawn) หรือปรากฏขึ้นมาได้

## AdVehicleSpawner

การวาง `AdVehicleSpawner` จากธีม Utility จะช่วยให้ผู้เล่นสามารถขับยานพาหนะได้หลังจากที่ดูโฆษณาจบ

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

- ข้อควรระวัง
  - ยานพาหนะที่ได้เป็นรางวัลจากการดูโฆษณาจะคงอยู่ก็ต่อเมื่อผู้เล่นกำลังขับรถอยู่เท่านั้น
  - ทันทีที่คุณลงจากรถ รถจะหายไปในทันที
- การกำหนดค่า Spawner
  - `Vehicle Prefab`: คุณสามารถเลือกว่าจะใช้ยานพาหนะใดเป็นรางวัลจากการดูโฆษณา
  - `Spawn Point`: คุณสามารถตั้งค่าตำแหน่งที่รถจะปรากฏได้หลังจากดูโฆษณาเสร็จ
  - `Life Time`: คุณสามารถตั้งเวลาที่จะทำให้รถหายไปได้ หากคุณตั้งเวลาเป็น '0 วินาที' ผู้เล่นจะสามารถขี่ได้เรื่อยๆ โดยไม่มีที่สิ้นสุดจนกว่าจะลงจากรถ

# 4. เพิ่มไอเทมจำเป็นสำหรับแผนที่กระโดด

:::hint{type="success"}
**ลองทำตามวิดีโอด้านล่างเพื่อเพิ่มออบเจกต์ต่างๆ ลงในแผนที่กระโดด (Jump Map) ของคุณ!**

**มีซับไตเติลหลายภาษาให้บริการ อย่าลืมเปิดซับไตเติลขณะรับชมนะครับ!**
:::

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

:::BlockQuote
📌 **คลิกที่ออบเจกต์ด้านล่างที่คุณต้องการศึกษาเพิ่มเติม!**
:::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
[ใช้แท่นเคลื่อนที่](docId\:ylnXTaVPConH4aEWAMm7b)

[ระเบิดเวลา](docId\:ylnXTaVPConH4aEWAMm7b)

[แผ่นบัฟ](docId\:ylnXTaVPConH4aEWAMm7b)

[แพลตฟอร์มขยายและหด](docId\:ylnXTaVPConH4aEWAMm7b)

[แพลตฟอร์มเด้ง](docId\:ylnXTaVPConH4aEWAMm7b)

[แพลตฟอร์มกระพริบ](docId\:ylnXTaVPConH4aEWAMm7b)
:::

:::VerticalSplitItem
[สายพานลำเลียง](docId\:ylnXTaVPConH4aEWAMm7b)

[แพลตฟอร์มหมุน](docId\:ylnXTaVPConH4aEWAMm7b)

[แพลตฟอร์มตก](docId\:ylnXTaVPConH4aEWAMm7b)

[กับดัก](docId\:ylnXTaVPConH4aEWAMm7b)

[เช็คพอยต์](docId\:ylnXTaVPConH4aEWAMm7b)
:::
::::

## ใช้แท่นเคลื่อนที่

ออบเจกต์ **MovingPlatform** เป็นแพลตฟอร์มเคลื่อนที่ที่มีประโยชน์อย่างมากสำหรับแผนที่กระโดด (Jump Map) ตัวละครสามารถขึ้นไปขี่ได้ และคุณยังสามารถตั้งค่าเส้นทางการเคลื่อนที่รวมถึงความเร็วได้อย่างง่ายดาย

ระบบจะซิงโครไนซ์ในโหมดมัลติเพลเยอร์โดยอัตโนมัติ ทำให้ผู้เล่นทุกคนในห้องเห็นการเคลื่อนไหวเหมือนกันทั้งหมด

คุณสามารถตั้งค่าคุณสมบัติต่างๆ ได้ในออบเจกต์ลูก `MovingPlatformManager`

- **Sync Type**: คุณสมบัติสำหรับการตั้งค่าการซิงโครไนซ์
  - Sync: ใช้งานการซิงโครไนซ์มัลติเพลเยอร์
  - NoneSync: ไม่ใช้งานการซิงโครไนซ์
- **Tween Type**: คุณสมบัติที่กำหนดรูปแบบการเคลื่อนที่ไป-กลับของ DOTween
  - 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**: คุณสมบัติที่กำหนดจำนวนรอบในการวนลูป
  - Repeat: วนลูปไปเรื่อยๆ
  - JustOneWay: เคลื่อนที่ไปทางเดียวเท่านั้น
  - JustOneRoundTrip: เคลื่อนที่ไป-กลับเพียงรอบเดียว
- **Sync Extrapolation**: คำนวณการปรับตำแหน่งเพิ่มเติมโดยคำนึงถึงเวลาหน่วงของเซิร์ฟเวอร์
  - ค่าเริ่มต้น (default) : true
- **Tween Position**
  - ป้อนพิกัด `localPosition` ที่แพลตฟอร์มจะเคลื่อนที่ผ่าน แพลตฟอร์มจะเคลื่อนที่ตามลำดับพิกัดที่ป้อนโดยอิงจาก Tween Type
  - ต้องตั้งค่าอย่างน้อย 2 พิกัด (จุดเริ่มต้น-จุดสิ้นสุด)
- **Move Speed**: ความเร็วในการเคลื่อนที่ของออบเจกต์

คุณสามารถปรับแต่งรูปลักษณ์ของ MovingPlatform ให้เข้ากับคอนเซปต์ของคุณได้

- **เปลี่ยนรูปลักษณ์ออบเจกต์**: ลบออบเจกต์ลูกที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้วนำออบเจกต์อื่นจากในแผนที่มาวางในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์

::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"}
**✏️ เคล็ดลับ**

- หากคุณต้องการให้ตัวละครวิ่งเร็วขึ้น ให้ป้อนค่าบวก เช่น 10 หรือ 20 หากคุณต้องการให้ช้าลง ให้ป้อนค่าติดลบ เช่น -3
- ลองปรับตั้งค่าความเร็วให้แตกต่างกันเพื่อประยุกต์ใช้สร้างโซนภารกิจหรือเป็นองค์ประกอบของปริศนา!
:::

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

## แพลตฟอร์มขยายและหด

**ScaleTrap** คือแพลตฟอร์มที่จะหดตัวและขยายขนาดซ้ำๆ ตามช่วงเวลาที่กำหนดเอาไว้

วางมันไว้ใน Jump Map หรือด่านที่จังหวะเวลามีความสำคัญ เพื่อสร้างระดับความยากที่หลากหลาย

- **Timeout**: ระยะเวลา (หน่วยเป็นวินาที) ที่ออบเจกต์จะคงขนาดขยายสูงสุดเอาไว้
- **Speed**: ความเร็วในการขยายและหดตัวของออบเจกต์

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

## แพลตฟอร์มเด้ง

**SpringPlatform** จะส่งตัวละครให้ลอยกระเด้งขึ้นไปในอากาศตามช่วงเวลาที่สม่ำเสมอโดยอัตโนมัติ โดยที่ผู้เล่นไม่ต้องกดบังคับใดๆ

- **Jump Power**: แรงส่งที่จะดันตัวละครให้เด้งขึ้นด้านบน
- **Delay Jump Timer**: ระยะเวลาระหว่างการกระโดดแต่ละครั้ง (หน่วยเป็นวินาที)

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

## แพลตฟอร์มกระพริบ

**BlinkingPlatform** จะปรากฏตัวขึ้นและหายไปซ้ำๆ อย่างต่อเนื่องตามช่วงเวลาที่กำหนดไว้

- **Visible Time**: ระยะเวลา (หน่วยเป็นวินาที) ที่แพลตฟอร์มจะปรากฏให้มองเห็นได้
- **Invisible Time**: ระยะเวลา (หน่วยเป็นวินาที) ที่แพลตฟอร์มจะซ่อนตัว
- **เปลี่ยนรูปลักษณ์ออบเจกต์:** ลบออบเจกต์ลูก `Model` ที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้ววางออบเจกต์อื่นจากในแผนที่ลงในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์ของมัน หากคุณเปลี่ยนรูปลักษณ์ อย่าลืมปรับขนาดและตำแหน่งของ Collider ในหน้าต่าง Inspector ให้พอดีกับรูปทรงแบบใหม่ด้วย

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

## สายพานลำเลียง

ออบเจกต์ **Conveyor** จะทำให้ตัวละครเคลื่อนที่ราวกับว่าพวกเขากำลังยืนอยู่บนสายพานลำเลียงจริงๆ

เมื่อเหยียบลงบน Conveyor ตัวละครจะถูกดันเลื่อนไปข้างหน้าตามความเร็วที่ตั้งค่าไว้

การเคลื่อนที่ไปในทิศทางเดียวกับลูกศรจะช่วยเพิ่มความเร็วในการเดินหรือวิ่ง

ในทางกลับกัน การพยายามเคลื่อนที่สวนทางกับทิศทางของลูกศรจะทำให้ความเร็วในการเดินหรือวิ่งลดลง

- **Conveyor Speed**: ปรับความเร็วของสายพาน
- **เปลี่ยนรูปลักษณ์ออบเจกต์:** ลบออบเจกต์ลูก `Model` ที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้ววางออบเจกต์อื่นจากในแผนที่ลงในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์ของมัน หากคุณเปลี่ยนรูปลักษณ์ อย่าลืมปรับขนาดและตำแหน่งของ Collider ในหน้าต่าง Inspector ให้พอดีกับรูปทรงแบบใหม่ด้วย

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

## แพลตฟอร์มหมุน

**(1) ตัวละครหมุนไปด้วยกันกับแพลตฟอร์ม**

**RotatingPlatform** คือแพลตฟอร์มหมุนได้ที่ตัวละครสามารถขึ้นไปยืนอยู่ด้านบนได้

- **x Speed**: เปลี่ยนความเร็วในการหมุนตามแกน x
- **y Speed**: เปลี่ยนความเร็วในการหมุนตามแกน y
- **z Speed**: เปลี่ยนความเร็วในการหมุนตามแกน z
- **เปลี่ยนรูปลักษณ์ออบเจกต์:** ลบออบเจกต์ลูก `Model` ที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้ววางออบเจกต์อื่นจากในแผนที่ลงในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์ของมัน หากคุณเปลี่ยนรูปลักษณ์ อย่าลืมปรับขนาดและตำแหน่งของ Collider ในหน้าต่าง Inspector ให้พอดีกับรูปทรงแบบใหม่ด้วย

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

**(2) ตัวละครอยู่นิ่ง มีเพียงแค่ออบเจกต์เท่านั้นที่หมุน**

**Rotator** คือออบเจกต์ที่หมุนเพื่อแสดงผลทางภาพเท่านั้น เนื่องจากมันไม่สามารถพาตัวละครหมุนไปพร้อมกับมันได้ ดังนั้นควรใช้สำหรับการตกแต่งฉากเป็นหลัก

- **x Speed**: เปลี่ยนความเร็วในการหมุนตามแกน x
- **y Speed**: เปลี่ยนความเร็วในการหมุนตามแกน y
- **z Speed**: เปลี่ยนความเร็วในการหมุนตามแกน z
- **เปลี่ยนรูปลักษณ์ออบเจกต์:** ลบออบเจกต์ลูก `Model` ที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้ววางออบเจกต์อื่นจากในแผนที่ลงในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์ของมัน หากคุณเปลี่ยนรูปลักษณ์ อย่าลืมปรับขนาดและตำแหน่งของ Collider ในหน้าต่าง Inspector ให้พอดีกับรูปทรงแบบใหม่ด้วย

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

## แพลตฟอร์มตก

**FallingPlatform** จะตกลงมาด้านล่างเมื่อเวลาผ่านไประยะหนึ่ง หลังจากที่มีตัวละครมาสัมผัสโดน

- **Duration**: เวลา (หน่วยเป็นวินาที) ที่แพลตฟอร์มจะค้างอยู่กับที่หลังจากถูกสัมผัสก่อนที่จะตกลงมา
- **Falling Speed**: ความเร็วในการตกลงมา
- **Falling Distance**: ระยะทางที่แพลตฟอร์มจะตกลงไป
- **เปลี่ยนรูปลักษณ์ออบเจกต์:** ลบออบเจกต์ลูก `Model` ที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้ววางออบเจกต์อื่นจากในแผนที่ลงในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์ของมัน หากคุณเปลี่ยนรูปลักษณ์ อย่าลืมปรับขนาดและตำแหน่งของ Collider ในหน้าต่าง Inspector ให้พอดีกับรูปทรงแบบใหม่ด้วย

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

## กับดัก

### (1) กับดักพื้นฐาน

**TrapObj** จะทำการเทเลพอร์ตตัวละครทันทีเมื่อมีการสัมผัสโดน

มันจะส่งผู้เล่นไปยัง CheckpointPlatform ที่ถูกเปิดใช้งานล่าสุด หรือกลับไปที่ SpawnPoint หากยังไม่มีเช็คพอยต์

- **เปลี่ยนรูปลักษณ์ออบเจกต์:** ลบออบเจกต์ลูก `Model` ที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้ววางออบเจกต์อื่นจากในแผนที่ลงในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์ของมัน หากคุณเปลี่ยนรูปลักษณ์ อย่าลืมปรับขนาดและตำแหน่งของ Collider ในหน้าต่าง Inspector ให้พอดีกับรูปทรงแบบใหม่ด้วย

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

### (2) กับดักเคลื่อนที่

**TrapMovingCube** จะเคลื่อนที่ไปและกลับระหว่าง `startPoint` และ `endPoint` และเทเลพอร์ตตัวละครทุกคนที่สัมผัสโดนมัน

มันจะส่งผู้เล่นไปยัง CheckpointPlatform ที่ถูกเปิดใช้งานล่าสุด หรือกลับไปที่ SpawnPoint หากยังไม่มีเช็คพอยต์

- **startPoint**: เลือกออบเจกต์ `startPoint` ใน Hierarchy แล้วย้ายไปยังตำแหน่งที่คุณต้องการเพื่อเปลี่ยนแปลงจุดเริ่มต้นของเส้นทาง
- **endPoint**: เลือกออบเจกต์ `endPoint` ใน Hierarchy แล้วย้ายไปเพื่อเปลี่ยนแปลงตำแหน่งจุดสิ้นสุดของเส้นทาง
- **Speed**: เปลี่ยนความเร็วในการเคลื่อนที่ในหน้าต่าง Inspector
- **เปลี่ยนรูปลักษณ์ออบเจกต์:** ลบออบเจกต์ลูก `Model` ที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้ววางออบเจกต์อื่นจากในแผนที่ลงในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์ของมัน หากคุณเปลี่ยนรูปลักษณ์ อย่าลืมปรับขนาดและตำแหน่งของ Collider ในหน้าต่าง Inspector ให้พอดีกับรูปทรงแบบใหม่ด้วย

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

### (3) กับดักลูกตุ้มแกว่ง

**TrapPendulum** จะแกว่งสลับไปมาจากซ้ายไปขวาเหมือนลูกตุ้มนาฬิกา

- **Amplitude**: ความสูงของการแกว่งลูกตุ้ม
- **Speed**: ความเร็วในการแกว่งลูกตุ้ม
- **Enable Kill**: หากทำเครื่องหมายถูกไว้ จะเทเลพอร์ตตัวละครที่ไปสัมผัสโดนรูปทรงกลมที่อยู่ด้านล่าง มันจะส่งผู้เล่นไปยัง CheckpointPlatform ที่ถูกเปิดใช้งานล่าสุด หรือกลับไปที่ SpawnPoint หากยังไม่มีเช็คพอยต์
- **เปลี่ยนรูปลักษณ์ออบเจกต์:** ลบออบเจกต์ลูก `Model` ที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้ววางออบเจกต์อื่นจากในแผนที่ลงในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์ของมัน หากคุณเปลี่ยนรูปลักษณ์ อย่าลืมปรับขนาดและตำแหน่งของ Collider ในหน้าต่าง Inspector ให้พอดีกับรูปทรงแบบใหม่ด้วย

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

### (4) กับดักหมุนแนวนอน

**TrapRotatingHorizontal** จะหมุนในแนวนอน โดยจะเทเลพอร์ตตัวละครที่สัมผัสโดนแท่งสีขาว

มันจะส่งผู้เล่นไปยัง CheckpointPlatform ที่ถูกเปิดใช้งานล่าสุด หรือกลับไปที่ SpawnPoint หากยังไม่มีเช็คพอยต์

- **Rotation Speed**: ความเร็วในการหมุน
- **เปลี่ยนรูปลักษณ์ออบเจกต์:** ลบออบเจกต์ลูก `Model` ที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้ววางออบเจกต์อื่นจากในแผนที่ลงในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์ของมัน หากคุณเปลี่ยนรูปลักษณ์ อย่าลืมปรับขนาดและตำแหน่งของ Collider ในหน้าต่าง Inspector ให้พอดีกับรูปทรงแบบใหม่ด้วย

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

### (5) กับดักหมุนแนวตั้ง

**TrapRotatingVertical** จะหมุนในแนวตั้ง โดยจะเทเลพอร์ตตัวละครที่สัมผัสโดนแท่งสีขาว

มันจะส่งผู้เล่นไปยัง CheckpointPlatform ที่ถูกเปิดใช้งานล่าสุด หรือกลับไปที่ SpawnPoint หากยังไม่มีเช็คพอยต์

- **Rotation Speed**: ความเร็วในการหมุน
- **เปลี่ยนรูปลักษณ์ออบเจกต์:** ลบออบเจกต์ลูก `Model` ที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้ววางออบเจกต์อื่นจากในแผนที่ลงในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์ของมัน หากคุณเปลี่ยนรูปลักษณ์ อย่าลืมปรับขนาดและตำแหน่งของ Collider ในหน้าต่าง Inspector ให้พอดีกับรูปทรงแบบใหม่ด้วย

![](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)

- **เปลี่ยนรูปลักษณ์ออบเจกต์:** หากต้องการเปลี่ยนแผ่นพื้น (Base Plate) ให้ลบออบเจกต์รูปลักษณ์ที่อยู่ภายใต้ `Plate` ออก แล้วเพิ่มสิ่งที่คุณต้องการเข้าไปแทน
  - เราขอแนะนำให้ไม่ไปปรับแต่งในส่วนประกอบอื่นๆ

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

## เช็คพอยต์

**CheckpointPlatform** จะกำหนดจุดเกิดใหม่ (Respawn Point) เมื่อถูกสัมผัส

จัดวางอย่างมีกลยุทธ์ตามจุดต่างๆ ของแต่ละด่านในขณะที่คุณกำลังสร้าง Jump Map

- **Index:&#x20;**&#xE01;ำหนดลำดับการเปิดใช้งานของ CheckpointPlatform
  - ค่า Index เริ่มต้นคือ **0** โปรดป้อนค่าที่มากกว่า 0 ขึ้นไป หากใส่ค่าติดลบระบบจะทำงานผิดพลาด
  - ตัวละครจะเกิดใหม่ที่ CheckpointPlatform ที่มี **ค่า Index สูงสุด** เท่าที่ตัวละครนั้นเคยไปสัมผัส
    - การใช้ Index จะป้องกันไม่ให้ผู้เล่นถูกส่งกลับไปยังเช็คพอยต์ของด่านที่ต่ำกว่า หากพวกเขาเผลอเดินย้อนกลับไปหลังจากเคลียร์เลเวลสูงๆ ได้แล้ว
  - CheckpointPlatform จะ **ถูกเปิดใช้งานเมื่อตัวละครไปสัมผัสโดนเป็นครั้งแรก** หากค่า Index มีค่าเท่ากัน ตัวละครจะเกิดใหม่ที่ **CheckpointPlatform ที่เพิ่งถูกเปิดใช้งานล่าสุด**
    - ตัวอย่าง) หากตัวละครเดินผ่านเช็คพอยต์ตามลำดับ 1 -> 2 -> 3 -> 2 ตัวละครจะเกิดใหม่ที่เช็คพอยต์ 3 (เช็คพอยต์อันใหม่ล่าสุดที่เพิ่งถูกเปิดการใช้งาน) ไม่ใช่เช็คพอยต์ 2 ที่เพิ่งเดินกลับไปหา
- **เปลี่ยนรูปลักษณ์ออบเจกต์:** ลบออบเจกต์ลูก `Model` ที่ทำหน้าที่แสดงรูปลักษณ์ออก แล้ววางออบเจกต์อื่นจากในแผนที่ลงในตำแหน่งเดียวกันเพื่อเปลี่ยนรูปลักษณ์ของมัน หากคุณเปลี่ยนรูปลักษณ์ อย่าลืมปรับขนาดและตำแหน่งของ Collider ในหน้าต่าง Inspector ให้พอดีกับรูปทรงแบบใหม่ด้วย

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

# 5. ใช้ธีมปลาหมึก

:::BlockQuote
📌 **คลิกที่ออบเจกต์ด้านล่างที่คุณต้องการศึกษาเพิ่มเติม!**
:::

::::VerticalSplit{layout="middle"}
:::VerticalSplitItem
[วัตถุยองฮี](docId\:ylnXTaVPConH4aEWAMm7b)

[ฟีเจอร์โหวต](docId\:ylnXTaVPConH4aEWAMm7b)
:::

:::VerticalSplitItem
[ตัวจับเวลาแบบนับถอยหลัง](docId\:ylnXTaVPConH4aEWAMm7b)

[แพลตฟอร์มกระจกที่แตกได้](docId\:ylnXTaVPConH4aEWAMm7b)
:::
::::

## วัตถุยองฮี

ออบเจกต์ **yonghee** จะช่วยให้คุณสามารถเล่นมินิเกมง่ายๆ ได้เพียงแค่นำมันไปวางในโลกของคุณ

- การทำงานพื้นฐาน
  - มันจะทำงานโดยอัตโนมัติเมื่อคุณกด Play
  - หากคุณขยับตัวในขณะที่ตัวละคร Yonghee กำลังมองมาที่คุณ เลเซอร์จะยิงออกมาและคุณจะล้มลง (เป็นการทริกเกอร์แอนิเมชันการล้มลงเท่านั้น)
  - ระยะเวลาที่ตัวละคร Yonghee จะหันมองกลับมา สามารถตั้งค่าได้ที่ Inspector
- **Min Counting Time**: เวลาต่ำสุดที่ Yonghee จะหันหลังกลับมามอง
- **Max Counting Time**: เวลาสูงสุดที่ Yonghee จะหันหลังกลับมามอง
- **Paused**: เปิด/ปิดการทำงานของเธอ หากคุณแค่ต้องการใช้เป็นออบเจกต์สำหรับตกแต่งโดยไม่มีฟังก์ชันใดๆ ให้ตั้งค่า Paused เป็น ON ก่อนนำไปวาง

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

## ฟีเจอร์โหวต

ออบเจกต์ **voting** จะคอยนับจำนวนคนที่ยืนอยู่ในพื้นที่ O และ X ตามลำดับ

แค่นำมันไปวางบนพื้น มันก็จะเริ่มทำงานทันทีโดยไม่ต้องตั้งค่าใดๆ เพิ่มเติม

- พื้นที่ Collider ของพื้น O และ X คือจุดที่จะเกิดการนับคะแนน คุณสามารถปรับขนาดพวกมันเพื่อปรับเปลี่ยนพื้นที่การรับรู้ได้

![](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** คือแพลตฟอร์มที่จะหายไปเมื่อถูกเหยียบหรือถูกสัมผัสโดน

ใช้เป็นสิ่งกีดขวางหรืออุปสรรคใน Jump Map

- **Is Breakable**: เปิด/ปิดคุณสมบัติการแตกหัก (หายไป) คุณสมบัติด้านล่างจะทำงานก็ต่อเมื่อตัวเลือกนี้เปิดเป็น ON เท่านั้น
- **Auto Reset Delay**: เมื่อสัมผัสโดนแล้ว มันจะเกิดใหม่ (Respawn) โดยอัตโนมัติตามระยะเวลาที่ได้ตั้งไว้ใน **Auto Reset Delay**
- **Has Auto Reset**: หากคุณไม่ต้องการให้แพลตฟอร์มเกิดใหม่ขึ้นมาอีก ให้ปิด **Has Auto Reset** เป็น OFF

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

