ZEPETO 캐릭터의 충돌 영역 변경하기
3 분
ZEPETO 캐릭터의 몸매와 관계없이, 캐릭터 컨트롤러의 충돌 영역 크기는 모두 일관됩니다.
캐릭터 컨트롤러의 충돌 영역은 기본 몸매에 맞춰져 있으며, 원통형입니다.
런타임의 씬 모드에서 생성된 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;

런타임 중 작은 신체 형태를 위한 충돌 영역 축소의 모습
- 특정 고유 아이템을 착용한 아바타의 높이를 정확하게 측정할 수 없는 경우가 있을 수 있습니다.