Mengubah area tabrakan karakter ZEPETO
Terlepas dari bentuk tubuh karakter ZEPETO, ukuran area tabrakan pengontrol karakter konsisten untuk semua.
Area tabrakan pengontrol karakter disesuaikan dengan bentuk tubuh dasar dan berbentuk silinder.
Dalam mode Scene runtime, dengan memilih karakter ZEPETO yang dihasilkan, Anda dapat melihat area tabrakan pengontrol karakter.



Tinggi karakter ZEPETO dapat bervariasi berdasarkan bentuk tubuhnya atau item yang dipakai.
Ketika ada perbedaan signifikan dari bentuk tubuh dasar, area tabrakan kadang-kadang dapat terlihat tidak alami.
📘 Silakan merujuk ke panduan berikut. [Ingin tahu tinggi karakter]

Dalam situasi seperti itu, Anda dapat mengubah nilai atribut Collider dari pengontrol karakter menggunakan skrip selama runtime.
- Tinggi: Tinggi area tabrakan
- Pusat: Sumbu tengah area tabrakan
- Radius: Radius area tabrakan
Harap dicatat, nilai yang digunakan dalam contoh diatur untuk dunia uji dan akun uji. Sesuaikan pengaturan agar sesuai dengan dunia Anda. Dalam contoh, nilai Radius tidak diubah.
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;
// Ukur tinggi karakter lokal
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);
// Tinggi karakter lokal
console.log(characterHeight);
// Mengatur tinggi dan titik pusat berdasarkan rasio, dengan asumsi tinggi bentuk tubuh dasar sekitar 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);
}
}- Skrip penting melibatkan akses ke pengontrol karakter dan memodifikasi nilai properti:
- this._localPlayer.zepetoPlayer.character.characterController.height = number;
- this._localPlayer.zepetoPlayer.character.characterController.center = Vector3;

- Mungkin ada situasi di mana Anda tidak dapat mengukur tinggi dengan benar untuk avatar yang mengenakan item unik tertentu.