---
title: ZEPETO 캐릭터의 충돌 영역 변경하기
slug: world-sdk-guide-kr/sVxe-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;**&#xB2E4;음 가이드를 참조하십시오. \[[캐릭터의 높이를 알고 싶으신가요?](docId\:MDaJRYnCA6WyPLsHBFbrV)]
:::



이런 경우에는 런타임 중에 스크립트를 사용하여 캐릭터 컨트롤러의 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"}
- 특정 고유 아이템을 착용한 아바타의 높이를 정확하게 측정할 수 없는 경우가 있을 수 있습니다.
:::

