ZEPETOキャラクターの衝突エリアの変更
3 分
ZEPETOキャラクターの体型に関係なく、キャラクターコントローラーの衝突エリアのサイズはすべてのキャラクターで一貫しています。
キャラクターコントローラーの衝突エリアは基本的な体型に合わせて調整されており、円柱形です。
ランタイムのシーンモードでは、生成されたZEPETOキャラクターを選択することで、キャラクターコントローラーの衝突エリアを表示できます。

円柱形のキャラクターコントローラー衝突エリア

コントローラー衝突エリアのデフォルト値
ZEPETOキャラクターの高さは、体型や装備しているアイテムによって異なる場合があります。
基本的な体型から大きく異なる場合、衝突エリアが不自然に見えることがあります。
📘 以下のガイドを参照してください。[キャラクターの高さを知りたい]
そのような場合、ランタイム中にスクリプトを使用してキャラクターコントローラーのコライダー属性値を変更できます。
- 高さ: 衝突エリアの高さ
- 中心: 衝突エリアの中心軸
- 半径: 衝突エリアの半径
例で使用されている値は、テストワールドとテストアカウント用に設定されています。設定をあなたのワールドに合わせて調整してください。例では、半径の値は変更されていません。
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;

実行時に小さな体形のための衝突エリアが縮小された外観
- 特定のユニークアイテムを着用しているアバターの高さを正しく測定できない場合があります。