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


ความสูงของตัวละคร ZEPETO อาจแตกต่างกันไปตามรูปร่างของร่างกายหรือสิ่งของที่สวมใส่.
เมื่อมีความแตกต่างอย่างมีนัยสำคัญจากรูปร่างพื้นฐาน พื้นที่การชนอาจดูไม่เป็นธรรมชาติในบางครั้ง.
📘 กรุณาอ้างอิงจากคู่มือต่อไปนี้. [ต้องการทราบความสูงของตัวละคร]
ในกรณีเช่นนี้ คุณสามารถปรับค่า Collider ของตัวควบคุมตัวละครโดยใช้สคริปต์ในระหว่างการทำงานได้
- ความสูง: ความสูงของพื้นที่การชน
- ศูนย์กลาง: แกนกลางของพื้นที่การชน
- รัศมี: รัศมีของพื้นที่การชน
โปรดทราบ ค่าที่ใช้ในตัวอย่างถูกตั้งค่าไว้สำหรับโลกทดสอบและบัญชีทดสอบ ปรับการตั้งค่าให้เหมาะสมกับโลกของคุณ ในตัวอย่าง ค่ารัศมีไม่ได้ถูกเปลี่ยนแปลง
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;

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