将物体附加到ZEPETO角色
8 分
将一个物体附加到ZEPETO角色上,以便当角色移动时,物体也随之移动。

步骤 1 : 准备一个物体预制件
首先,您需要将物体转换为预制件。 创建一个物体,将其拖到资产文件夹中并将其制作成预制件。

物体预制件示例
步骤 2 : 脚本将物体附加到角色的特定部分
- 在场景中实现ZEPETO角色创建代码作为默认。
📘 请参考以下指南。[创建 ZEPETO 角色]
步骤 2-1 : 编写脚本
1) 创建层级 > 创建空对象并将其重命名为 AttachObject。
2) 创建项目 > 创建 > ZEPETO > TypeScript 并将其重命名为 AttachObject。
3) 编写如下示例脚本。
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { ZepetoCharacter, ZepetoPlayers } from 'ZEPETO.Character.Controller';
import { Transform, Animator, GameObject, HumanBodyBones, Object } from 'UnityEngine';
export default class AttachObject extends ZepetoScriptBehaviour {
// 要附加到身体上的对象预制件。
public prefItem: GameObject;
// 要附加对象的骨骼。
public bodyBone: HumanBodyBones;
private _localCharacter: ZepetoCharacter;
Start() {
ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
// 找到本地玩家并将其设置为 _localCharacter。
this._localCharacter = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
// 获取 _localCharacter 的动画组件。
const animator: Animator = this._localCharacter.ZepetoAnimator;
// 获取要附加对象的骨骼位置。
const bone: Transform = animator.GetBoneTransform(this.bodyBone);
// 创建对象预制件。
Object.Instantiate(this.prefItem, bone) as GameObject;
});
}
}
- 脚本流程如下:
- Start()
- 注册 ZepetoPlayers.instance.OnAddedLocalPlayer 事件监听器,当本地玩家被添加时会触发。
- 将本地玩家设置为 _localCharacter 变量。
- 获取 _localCharacter 的动画组件,获取 bodyBone 中指定的位置,并在该位置创建 prefItem 中指定的预制件。
步骤 2-2 : 在检查器中设置附加位置
1) 完成脚本编写后,将脚本添加到 AttachObject 对象中。
2) 在检查器中,分配 Pref 项,Body Bone。
- Pref 项是对象预制件。
- Body Bone 是对象将被创建的位置。
- 选择左手,使其看起来像你在手中握着对象。

示例脚本设置屏幕
3) 按下播放按钮运行,你将看到 ZEPETO 角色的左手上附着了对象。
步骤 3 : 应用
你可以以相同的方式将任何对象附加到 Body Bone 的所需位置。
以下是将 BuildIt 的颈枕对象附加到角色脖子上的示例,使 ZEPETO 角色看起来像是戴着颈枕。

- 您可以适当地调整对象的位置和旋转,以获得所需的外观。

对象预制件配置示例
- 在检查器中,将颈枕对象分配给预制项,并选择颈部作为身体骨骼。

示例脚本设置屏幕