---
title: การเปลี่ยนพื้นที่การชนของตัวละคร ZEPETO
slug: world-sdk-guide-th/44tW-zepeto
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

ไม่ว่าจะเป็นรูปร่างของตัวละคร ZEPETO ขนาดของพื้นที่การชนของตัวควบคุมตัวละครจะเหมือนกันสำหรับทุกตัว.

พื้นที่การชนของตัวควบคุมตัวละครถูกปรับให้เหมาะกับรูปร่างพื้นฐานของร่างกายและมีรูปทรงกระ silinder.

ในโหมด Scene ของการทำงาน โดยการเลือกตัวละคร ZEPETO ที่สร้างขึ้น คุณสามารถดูพื้นที่การชนของตัวควบคุมตัวละครได้.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-A5GXFRkfmN9aEa64kaJaQ-20240904-102421.png "พื้นที่การชนของตัวควบคุมตัวละครในรูปทรงกระ silinder")

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-2CX0JUoiPDEzaCP6lI0jh-20240904-102421.png "ค่าพื้นฐานของพื้นที่การชนของตัวควบคุม")



ความสูงของตัวละคร ZEPETO อาจแตกต่างกันไปตามรูปร่างของร่างกายหรือสิ่งของที่สวมใส่.

เมื่อมีความแตกต่างอย่างมีนัยสำคัญจากรูปร่างพื้นฐาน พื้นที่การชนอาจดูไม่เป็นธรรมชาติในบางครั้ง.

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



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

- ความสูง: ความสูงของพื้นที่การชน
- ศูนย์กลาง: แกนกลางของพื้นที่การชน
- รัศมี: รัศมีของพื้นที่การชน

โปรดทราบ ค่าที่ใช้ในตัวอย่างถูกตั้งค่าไว้สำหรับโลกทดสอบและบัญชีทดสอบ ปรับการตั้งค่าให้เหมาะสมกับโลกของคุณ ในตัวอย่าง ค่ารัศมีไม่ได้ถูกเปลี่ยนแปลง

```typescript
import {HumanBodyBones, Vector3, WaitForEndOfFrame, WaitForSeconds } from 'UnityEngine';
import {KnowSockets, LocalPlayer, ZepetoPlayers, ZepetoPlayer } from 'ZEPETO.Character.Controller';
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
 
export default class ChangeCollider extends ZepetoScriptBehaviour {
 
     private _localPlayer: LocalPlayer;
 
     Start() {
 
         ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
             this._localPlayer = ZepetoPlayers.instance.LocalPlayer;
             
             // วัดความสูงของตัวละครท้องถิ่น
             this.StartCoroutine(this.CoGetZepetoHeight(this._localPlayer.zepetoPlayer));
         });
     }
 
     *CoGetZepetoHeight(zepeto: ZepetoPlayer) {
         yield new WaitForEndOfFrame();
         const headPosition = zepeto.character.GetSocket(KnowSockets.HEAD_UPPER).position;
         const leftFootPosition = zepeto.character.ZepetoAnimator.GetBoneTransform(HumanBodyBones.LeftFoot).position;
         const rightFootPosition = zepeto.character.ZepetoAnimator.GetBoneTransform(HumanBodyBones.RightFoot).position;
         const characterCenter = Vector3.Lerp(leftFootPosition, rightFootPosition, 0.5);
         const characterHeight = Vector3.Distance(headPosition, characterCenter);
         // ความสูงของตัวละครท้องถิ่น
         console.log(characterHeight);                  
 
        // ตั้งค่าความสูงและจุดศูนย์กลางตามอัตราส่วน โดยสมมติว่าความสูงของรูปร่างพื้นฐานอยู่ที่ประมาณ 0.85
        let controllerHeight = characterHeight / 0.85 * 1.2;
        let controllerCenterY = controllerHeight / 2;
 
        this._localPlayer.zepetoPlayer.character.characterController.height = controllerHeight;
        this._localPlayer.zepetoPlayer.character.characterController.center = new Vector3(0, controllerCenterY, 0);      
    }
}
```

- สคริปต์ที่จำเป็นเกี่ยวข้องกับการเข้าถึงตัวควบคุมตัวละครและการปรับเปลี่ยนค่าของคุณสมบัติ:
  - this.\_localPlayer.zepetoPlayer.character.characterController.height = number;
  - this.\_localPlayer.zepetoPlayer.character.characterController.center = Vector3;

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-L4CwJhI8J4UpJVYEdgzM1-20240904-102421.gif "ลักษณะของพื้นที่การชนที่ลดลงสำหรับรูปร่างร่างกายที่เล็กลงในระหว่างการทำงาน")

:::hint{type="danger"}
- อาจมีกรณีที่คุณไม่สามารถวัดความสูงได้อย่างถูกต้องสำหรับอวตารที่สวมใส่ไอเท็มเฉพาะที่ไม่ซ้ำกันบางอย่าง.
:::

