---
title: การแนบวัตถุกับตัวละคร ZEPETO
slug: world-sdk-guide-th/hoJE-zepeto
docTags: 
createdAt: 2024-09-02T08:34:13.134Z
---

แนบวัตถุเข้ากับตัวละคร ZEPETO เพื่อให้เมื่อ ตัวละครเคลื่อนที่ วัตถุก็เคลื่อนที่ไปด้วย

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-RVU1Pj2VnYVimqUgTc6-f-20240904-102420.gif" size="40" width="800" height="648" position="center" showCaption="false"}



## ขั้นตอนที่ 1 : เตรียม Prefab วัตถุ



ก่อนอื่น คุณต้องเปลี่ยนวัตถุของคุณให้เป็น Prefab.
สร้างวัตถุ ดึงมันไปที่โฟลเดอร์ Asset และทำให้มันเป็น Prefab.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-a1A3QEkz2EOYUKkkmWhU6-20240904-102418.png "ตัวอย่างของ Prefab วัตถุ")



## ขั้นตอนที่ 2 : สคริปต์เพื่อแนบวัตถุเข้ากับส่วนเฉพาะของตัวละคร



- นำรหัสการสร้างตัวละคร ZEPETO ไปใช้ใน Scene เป็นค่าเริ่มต้น

:::hint{type="info"}
**📘&#x20;**&#xE42;ปรดดูคู่มือต่อไปนี้.\[[สร้างตัวละคร ZEPETO](docId\:MRnK9T5XnrdQCVMsgFgpk)]
:::



### ขั้นตอน 2-1 : เขียนสคริปต์

1\) สร้างลำดับชั้น > สร้างวัตถุเปล่าและเปลี่ยนชื่อเป็น AttachObject.

2\) สร้างโปรเจกต์ > สร้าง > ZEPETO > TypeScript และเปลี่ยนชื่อเป็น AttachObject.

3\) เขียนสคริปต์ตัวอย่างตามด้านล่าง.

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { ZepetoCharacter, ZepetoPlayers } from 'ZEPETO.Character.Controller';
import { Transform, Animator, GameObject, HumanBodyBones, Object } from 'UnityEngine';

export default class AttachObject extends ZepetoScriptBehaviour {

    // วัตถุ prefab ที่จะติดอยู่บนร่างกาย
    public prefItem: GameObject;
    // กระดูกที่จะติดวัตถุ
    public bodyBone: HumanBodyBones;

    private _localCharacter: ZepetoCharacter;

    Start() {
      
        ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
            // ค้นหาผู้เล่นท้องถิ่นและตั้งค่าให้กับ _localCharacter
            this._localCharacter = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
            // รับส่วนประกอบ animator ของ _localCharacter
            const animator: Animator = this._localCharacter.ZepetoAnimator;
            // รับตำแหน่งของกระดูกที่จะติดวัตถุ
            const bone: Transform = animator.GetBoneTransform(this.bodyBone);
            // สร้าง prefab ของวัตถุ
            Object.Instantiate(this.prefItem, bone) as GameObject;
          
        });
    }
}
```



- สคริปต์ทำงานตามลำดับดังนี้:
  - Start()
    - ลงทะเบียนผู้ฟังเหตุการณ์ ZepetoPlayers.instance.OnAddedLocalPlayer ซึ่งจะถูกเรียกเมื่อมีผู้เล่นท้องถิ่นถูกเพิ่มเข้ามา
    - ตั้งค่าผู้เล่นท้องถิ่นให้กับตัวแปร \_localCharacter
    - รับส่วนประกอบ animator ของ \_localCharacter, รับตำแหน่งที่ระบุใน bodyBone, และสร้าง prefab ที่ระบุใน prefItem ที่ตำแหน่งนั้น



### ขั้นตอนที่ 2-2 : การตั้งค่าตำแหน่งการติดตั้งใน Inspector

1\) หลังจากเขียนสคริปต์เสร็จแล้ว ให้เพิ่มสคริปต์ไปยังวัตถุ AttachObject.

2\) ใน Inspector ให้กำหนด Pref Item, Body Bone.

- Pref Item คือวัตถุ prefab.
- Body Bone คือสถานที่ที่วัตถุจะถูกสร้างขึ้น.
  - เลือก LeftHand เพื่อทำให้ดูเหมือนว่าคุณกำลังถือวัตถุในมือของคุณ.



![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-da9YMvrZkYu620CaOeWE0-20240904-102418.png "หน้าจอตั้งค่าสคริปต์ตัวอย่าง")



3\) กดปุ่ม Play เพื่อรันและคุณจะเห็นตัวละคร ZEPETO พร้อมวัตถุที่ติดอยู่ที่มือซ้ายของเขา.



## ขั้นตอนที่ 3 : ใช้งาน



คุณสามารถติดตั้งวัตถุใด ๆ ไปยังตำแหน่งที่ต้องการของ Body Bone ในลักษณะเดียวกัน.

:::hint{type="info"}
**📘 Unity HumanBodyBones**
[https://docs.unity3d.com/ScriptReference/HumanBodyBones.html](https://docs.unity3d.com/ScriptReference/HumanBodyBones.html)
:::



ต่อไปนี้คือตัวอย่างการติดตั้งวัตถุหมอนคอจาก BuildIt ไปยังคอของตัวละครเพื่อให้ดูเหมือนว่าตัวละคร ZEPETO กำลังสวมหมอนคออยู่

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-NvEWim8bsEaTZfU8ZnIWz-20240904-102420.gif" size="58" width="800" height="648" position="center" showCaption="false"}



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

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-nQ0DQLTax73xt5ioGw0Hm-20240904-102418.png "ตัวอย่างการตั้งค่าพรีฟาบวัตถุ")



- ใน Inspector ให้กำหนดวัตถุหมอนคอไปยัง Pref Item และเลือก Neck สำหรับ Body Bone

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-_Id79tFqG3jX3dvvG1Cjb-20240904-102418.png "ตัวอย่างหน้าจอการตั้งค่าสคริปต์")

