创建一个Zepeto角色
- 在层级窗口中,点击 3D 对象 → 平面。
- 将平面的位置设置为 X: 0, Y: 0, Z: 0,并将大小设置为 X: 10, Y: 1, Z: 10。
👍 提示
- 平面是用于测试的最基本地面。
- 只要是带有碰撞体的对象,使用什么都无所谓。
- 随着你对世界创建的熟悉,你可以制作一个酷炫的地图来替代地面。
- 没有平台,角色一创建就会掉落并且不可见。
在层级窗口中,选择 ZEPETO → ZepetoPlayers 标签。
一个名为 ZepetoPlayers 的对象将会自动创建,如下所示。 ZepetoPlayers 是一个管理世界中角色控制器模块的组件。
可以在检查器窗口中设置角色控制和相关功能的值。
- 通常可以设置 ZEPETO 相机设置、角色移动速度、跳跃高度等。
- 在这个例子中,我们将使用默认值。
📘 有关详细设置,请参阅 ZEPETO 角色控制器指南。ZEPETO角色控制器
要加载角色,您需要创建一个新的 ZEPETOScript 文件。
1) 在 [项目] 面板中,选择左上角的 [+] 菜单或选择资产 → 创建 → ZEPETO → TypeScript。
2) 当创建 ZEPETOScript 文件时,请将名称输入为 CharacterController。将创建如下所示的脚本文件。
3) 在层级 → [+] 菜单 → 运行创建空对象菜单。
4) 创建空的 GameObject 时,写上 CharacterController。将创建如下所示的 GameObject。
5) 将之前创建的 CharacterController ZEPETOScript 文件拖到 GameObject 上作为组件。
- ZEPETOScript 不会运行,除非它作为组件添加到场景中的 GameObject。
6) 首先,输入您的 ZEPETO ID 以将角色加载到场景中。 打开 CharacterController ZEPETOScript 文件并运行脚本编辑器程序。 然后应用下面的示例脚本。
- 请在 [ZEPETO_ID] 的位置输入您的 ZEPETO ID。
- 如果您的 ZEPETO ID 是 'abcd',您应该输入为 ZepetoPlayers.instance.CreatePlayerWithZepetoId("", "abcd", new SpawnInfo(), true)
7) 保存脚本后,请返回 Unity 编辑器。
- 请继续执行步骤 3。
- 如果您使用此代码,您将只能使用特定 ZEPETO ID 的头像进行游戏。
- 当您启动您的世界时,您需要修改代码,以基于访问您世界的用户的 ZEPETO ID,而不是您在代码中输入的 ZEPETO ID。请使用下面的脚本。
- 此脚本根据已登录的ID创建一个ZEPETO角色,并不接受特定的ZEPETO ID,因此请确保在测试之前先登录Unity编辑器。
- 保存脚本后,请返回Unity编辑器。
- 请继续执行第3步。
- 请确保客户端脚本中只有一个本地玩家创建代码。
- 如果创建了多个相同的玩家,可能是CreatePlayerWithUserId()脚本在其他地方被调用。
- 一个常见的错误是应用多人示例代码,同时保留本指南中的角色创建代码不变,导致角色被创建两次。请通过注释掉一方来管理此问题。
使用屏幕中央的 [▶︎(播放)] 按钮检查 CharacterController 是否正常工作。
加载的角色被称为本地玩家的角色,这意味着用户可以直接在自己的设备上控制的 ZEPETO 角色。
CharacterController 为每个输入事件提供了一个通用的角色控制键映射,适用于不同的设备(PC/移动设备)。因此,加载的角色可以在场景中进行控制,而不受平台的限制。
在 PC 上,角色和相机可以通过鼠标操作。在移动设备上,角色和相机可以通过下面截图所示的虚拟摇杆操作。
👍 以下输入接口支持角色控制: PC
- 移动:键盘箭头,WASD
- 跳跃:空格
- 双重跳跃:(左)Shift
- 缩放:鼠标滚轮
- 旋转:屏幕拖动
移动设备
- 移动:(左下角屏幕)虚拟摇杆
- 跳跃:(右下角屏幕)虚拟摇杆按钮
- 缩放:(两根手指)屏幕拖动
- 旋转:(一根手指)屏幕拖动
如果ZEPETO角色创建功能不正常,请前往 Unity菜单 > 项目设置 > 编辑器 > 进入播放模式设置。
- 将进入播放模式选项设置为关闭。
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 对象 > 立方体。
如果您将角色的生成位置值更改为以下内容,它将生成在立方体上方。
使用屏幕中央的播放按钮检查角色的创建。
如果你改变位置和方向值,你也可以创建一个躺着的角色。