---
title: การนำการเคลื่อนย้ายทางไกลไปใช้งาน
slug: world-sdk-guide-th/wMw_9wENvZWAle5f7MH2S
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

ดำเนินการพอร์ทัลที่ตัวละคร ZEPETO สามารถโทรจิตไปยังสองจุดที่แตกต่างกัน



![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-xQUSTAIqb6XR3_ijDqhI3-20240904-102421.gif)



## ขั้นตอนที่ 1 : ตั้งค่าจุดหมายปลายทางการโทรจิต



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

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



1\) สร้างจุดเพื่อโทรจิตไปยัง

- สำหรับคู่มือนี้ เราจะเรียกพวกเขาว่าจุด A และ B
- สร้าง Hierarchy > 3D Object > Plane และเปลี่ยนชื่อเป็น Plane\_A

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-YPfNLxuMmybV-RiO0UnQh-20240904-102421.png)



2\) เพิ่มวัตถุพอร์ทัลที่จะเริ่มการเทเลพอร์ต.

- ตรวจสอบให้แน่ใจว่าได้เพิ่ม Collider เพื่อโต้ตอบกับวัตถุ.
  - ปรับขนาดของพื้นที่เพื่อตรวจจับการชนกัน.
  - ตรวจสอบให้แน่ใจว่าได้เลือก Is Trigger.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-zsw3KDDtRnc65lbmesDh1-20240904-102421.png)



3\) สร้างจุดเทเลพอร์ตทั้งหมด 2 จุดในลักษณะเดียวกัน.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-esYtCDox6OMaljFjTWWNa-20240904-102421.png "ตัวอย่างของจุดเทเลพอร์ต A")



![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-vB1mUIZBJCc8INMKDEr_A-20240904-102421.png "ตัวอย่างของจุดเทเลพอร์ต B")



- ปรับตำแหน่งเพื่อให้จุดไม่ทับซ้อนกัน.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-W8LMhFUKNiUbYj8h1QeEW-20240904-102421.png)



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



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

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

- ตรรกะในการเทเลพอร์ตด้วย destinationObject เมื่อมีการชนกับตัวละคร ZEPETO ในพื้นที่ชนของวัตถุที่สคริปต์ถูกแนบอยู่.

```typescript
import { Collider, Vector3, Quaternion, GameObject } from 'UnityEngine';
import { SpawnInfo, ZepetoCharacter, ZepetoPlayer, ZepetoPlayers } from 'ZEPETO.Character.Controller';
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
 
export default class Teleport extends ZepetoScriptBehaviour {
     
    // วัตถุปลายทางที่จะถูกเทเลพอร์ตไป
    public destinationObject: GameObject;
 
    private _localCharacter: ZepetoCharacter;
 
    Start() {
        // ค้นหาผู้เล่นท้องถิ่นและตั้งค่าให้กับ _localCharacter
        ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
            this._localCharacter = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
        });
    }
 
    OnTriggerEnter(collider: Collider) {
        // ไม่ต้องดำเนินการฟังก์ชันหาก _localCharacter ยังไม่ได้ตั้งค่า หรือหาก gameObject ที่ชนไม่ใช่ _localCharacter
        if (this._localCharacter == null || collider.gameObject != this._localCharacter.gameObject) {
            return;
        }
 
        // เทเลพอร์ต _localCharacter ไปยังตำแหน่งของ destinationObject
        this._localCharacter.Teleport(this.destinationObject.transform.position, Quaternion.identity);
    }
}
```



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

4\) ใน Inspector ให้กำหนดวัตถุปลายทาง.

- วัตถุปลายทาง : วัตถุพอร์ทัลที่จะไปถึงจุดสิ้นสุดของการเทเลพอร์ต.

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-y-PuKoPDgX5mbE1uVnOUE-20240904-102421.png" size="62" width="424" height="601" position="center" showCaption="false"}



## ขั้นตอนที่ 3 : รัน



เทเลพอร์ตตัวละคร ZEPETO จากจุด A ไปยังจุด B เมื่อมันอยู่ใกล้พอร์ทัล

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-FjXBe_11wP8xMnFzwYT_M-20240904-102421.png)



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



:::hint{type="info"}
**📘 ตัวอย่างการเล่นหลายคน - ส่วนประกอบการเล่นหลายคนของ Zepeto**
[https://github.com/naverz/zepeto-multiplay-example/tree/main/Assets/Zepeto Multiplay Component](https://github.com/naverz/zepeto-multiplay-example/tree/main/Assets/Zepeto%20Multiplay%20Component)
:::

