创建一个Zepeto角色
步骤 1 : 向场景添加基础
- 在层级窗口中,点击 3D 对象 → 平面。

- 将平面的位置设置为 X: 0, Y: 0, Z: 0,并将大小设置为 X: 10, Y: 1, Z: 10。

👍 提示
- 平面是用于测试的最基本地面。
- 只要是带有碰撞体的对象,使用什么都无所谓。
- 随着你对世界创建的熟悉,你可以制作一个酷炫的地图来替代地面。
- 没有平台,角色一创建就会掉落并且不可见。
步骤 2 : 添加 ZEPETO 玩家组件
在层级窗口中,选择 ZEPETO → ZepetoPlayers 标签。

一个名为 ZepetoPlayers 的对象将会自动创建,如下所示。 ZepetoPlayers 是一个管理世界中角色控制器模块的组件。

可以在检查器窗口中设置角色控制和相关功能的值。
- 通常可以设置 ZEPETO 相机设置、角色移动速度、跳跃高度等。
- 在这个例子中,我们将使用默认值。
📘 有关详细设置,请参阅 ZEPETO 角色控制器指南。ZEPETO角色控制器
步骤 3 : 加载角色
要加载角色,您需要创建一个新的 ZEPETOScript 文件。
1) 在 [项目] 面板中,选择左上角的 [+] 菜单或选择资产 → 创建 → ZEPETO → TypeScript。

2) 创建ZEPETOScript文件时,请输入名称CharacterLoader。将创建一个如下所示的脚本文件。

3) 在Hierarchy→[+] 菜单→运行Create Empty菜单。

4) 创建空的 GameObject 时,写入 CharacterLoader。将创建一个如下所示的 GameObject。

5) 在Hierarchy中选择CharacterLoader GameObject,然后单击Inspector中的Add Component按钮。

6) 在Add Component窗口中,添加Zepeto script组件。

7) 单击Zepeto Script组件上的Attach Zepeto Script按钮。

8) 在Attach Zepeto Script窗口中选择您之前创建的CharacterLoader ZEPETO Script文件。

9) 按如下方式配置 CharacterLoader GameObject。

- ZEPETOScript 不会运行,除非它作为组件添加到场景中的 GameObject。
10) 接下来,输入你的 ZEPETO ID,将角色加载到场景中。 打开 CharacterLoader 的 ZEPETOScript 文件,运行脚本编辑器程序。 然后应用下面的示例脚本。
- 请在 [ZEPETO_ID] 的位置输入您的 ZEPETO ID。
- 如果您的 ZEPETO ID 是 'abcd',您应该输入为 ZepetoPlayers.instance.CreatePlayerWithZepetoId("", "abcd", new SpawnInfo(), true)
用于加载具有特定 ZEPETO ID 的 ZEPETO 角色的脚本
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { SpawnInfo, ZepetoPlayers, LocalPlayer } from 'ZEPETO.Character.Controller';
export default class CharacterLoader extends ZepetoScriptBehaviour {
Start() {
ZepetoPlayers.instance.CreatePlayerWithZepetoId("", "[ZEPETO_ID]", new SpawnInfo(), true);
ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
const player: LocalPlayer = ZepetoPlayers.instance.LocalPlayer;
});
}
}
11) 保存脚本后,请返回 Unity 编辑器。
- 请继续执行步骤 4。
- 如果您使用此代码,您将只能使用特定 ZEPETO ID 的头像进行游戏。
- 当您启动您的世界时,您需要修改代码,以基于访问您世界的用户的 ZEPETO ID,而不是您在代码中输入的 ZEPETO ID。请使用下面的脚本。
加载已登录ID的角色的脚本
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { SpawnInfo, ZepetoPlayers, LocalPlayer, ZepetoCharacter } from 'ZEPETO.Character.Controller';
import { WorldService } from 'ZEPETO.World';
export default class CharacterLoader extends ZepetoScriptBehaviour {
Start() {
// Grab the user id specified from logging into zepeto through the editor.
ZepetoPlayers.instance.CreatePlayerWithUserId(WorldService.userId, new SpawnInfo(), true);
ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
const player: LocalPlayer = ZepetoPlayers.instance.LocalPlayer;
});
}
}- 此脚本根据已登录的ID创建一个ZEPETO角色,并不接受特定的ZEPETO ID,因此请确保在测试之前先登录Unity编辑器。
- 保存脚本后,请返回Unity编辑器。
- 请继续执行第4步。
- 请确保客户端脚本中只有一个本地玩家创建代码。
- 如果创建了多个相同的玩家,可能是CreatePlayerWithUserId()脚本在其他地方被调用。
- 一个常见的错误是应用多人示例代码,同时保留本指南中的角色创建代码不变,导致角色被创建两次。请通过注释掉一方来管理此问题。
步骤 4 : 运行
使用屏幕中央的 [▶︎(播放)] 按钮检查 CharacterLoader 是否正常工作。
加载的角色被称为本地玩家的角色,这意味着用户可以直接在自己的设备上控制的 ZEPETO 角色。
CharacterLoader 为每个输入事件提供了一个通用的角色控制键映射,适用于不同的设备(PC/移动设备)。因此,加载的角色可以在场景中进行控制,而不受平台的限制。
在 PC 上,角色和相机可以通过鼠标操作。在移动设备上,角色和相机可以通过下面截图所示的虚拟摇杆操作。

👍 以下输入接口支持角色控制: PC
- 移动:键盘箭头,WASD
- 跳跃:空格
- 双重跳跃:(左)Shift
- 缩放:鼠标滚轮
- 旋转:屏幕拖动
移动设备
- 移动:(左下角屏幕)虚拟摇杆
- 跳跃:(右下角屏幕)虚拟摇杆按钮
- 缩放:(两根手指)屏幕拖动
- 旋转:(一根手指)屏幕拖动
如果ZEPETO角色创建功能不正常,请前往 Unity菜单 > 项目设置 > 编辑器 > 进入播放模式设置。
- 将进入播放模式选项设置为关闭。

步骤 5:更改 ZEPETO 角色的起始位置
ZEPETO 角色的起始位置在 UnityEngine.Vector3(0,0,0) 创建,除非另行设置。
旋转值也在 UnityEngine.Quaternion.Euler(0,0,0) 的角度生成。
角色生成位置和旋转值使用 ZepetoPlayers.instance.CreatePlayerWithUserId(WorldService.userId, new SpawnInfo(), true); 函数的参数 SpawnInfo() 将被生成。
因此,您可以在调用角色创建函数之前设置 SpawnInfo() 的期望值,以确保它在特定位置生成。
我们已经在地图上的位置 (0,0,0) 预放置了一个 3D 对象 > 立方体。
如果您将角色的生成位置值更改为以下内容,它将生成在立方体上方。
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { SpawnInfo, ZepetoPlayers, LocalPlayer, ZepetoCharacter } from 'ZEPETO.Character.Controller';
import { WorldService } from 'ZEPETO.World';
import { Quaternion, Vector3 } from 'UnityEngine';
export default class CharacterLoader extends ZepetoScriptBehaviour {
Start() {
// 设置角色生成位置
const spawnInfo = new SpawnInfo();
spawnInfo.position = new Vector3(0,2,0);
// 设置角色生成旋转
spawnInfo.rotation = Quaternion.Euler(0,0,0);
// 从通过编辑器登录zepeto获取指定的用户id。
ZepetoPlayers.instance.CreatePlayerWithUserId(WorldService.userId, spawnInfo, true);
ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
const player: LocalPlayer = ZepetoPlayers.instance.LocalPlayer;
});
}
}
使用屏幕中央的播放按钮检查角色的创建。

如果你改变位置和方向值,你也可以创建一个躺着的角色。
// 设置角色生成位置
const spawnInfo = new SpawnInfo();
spawnInfo.position = new Vector3(2,1,2);
// 设置角色生成旋转
spawnInfo.rotation = Quaternion.Euler(90,0,0);