---
title: ZEPETOキャラクターの衝突エリアの変更
slug: world-sdk-guide-ja/i4xU-zepeto
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

ZEPETOキャラクターの体型に関係なく、キャラクターコントローラーの衝突エリアのサイズはすべてのキャラクターで一貫しています。

キャラクターコントローラーの衝突エリアは基本的な体型に合わせて調整されており、円柱形です。

ランタイムのシーンモードでは、生成されたZEPETOキャラクターを選択することで、キャラクターコントローラーの衝突エリアを表示できます。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-A5GXFRkfmN9aEa64kaJaQ-20240904-102421.png "円柱形のキャラクターコントローラー衝突エリア")

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-2CX0JUoiPDEzaCP6lI0jh-20240904-102421.png "コントローラー衝突エリアのデフォルト値")



ZEPETOキャラクターの高さは、体型や装備しているアイテムによって異なる場合があります。

基本的な体型から大きく異なる場合、衝突エリアが不自然に見えることがあります。

:::hint{type="info"}
**📘&#x20;**&#x4EE5;下のガイドを参照してください。\[[キャラクターの高さを知りたい](docId\:tjXASgHFrQn5CVd7-sfbt)]
:::



そのような場合、ランタイム中にスクリプトを使用してキャラクターコントローラーのコライダー属性値を変更できます。

- 高さ: 衝突エリアの高さ
- 中心: 衝突エリアの中心軸
- 半径: 衝突エリアの半径

例で使用されている値は、テストワールドとテストアカウント用に設定されています。設定をあなたのワールドに合わせて調整してください。例では、半径の値は変更されていません。

```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"}
- 特定のユニークアイテムを着用しているアバターの高さを正しく測定できない場合があります。
:::

