更改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;

在运行时,较小身体形状的碰撞区域减少的外观
- 可能会出现无法正确测量穿戴特定独特物品的头像高度的情况。