跳到主要内容

多人协同

多人协同是插件基础的节点,提供了协同UI、角色控制器和基础的协同功能。

目前多人协同插件的相关功能只支持在PC平台导出使用,支持外接VR头盔或以鼠标键盘操作,其他平台的导出将会在后续版本支持。

插件使用

创建插件

  1. 导入插件后,在快速创建中创建多人协同节点

  1. 多人协同插件内置了一个角色控制器,为了防止冲突,需要将场景中的其他相机删除

节点属性

  • 默认服务器:分为公用和私有,私有服务器需要自行搭建,一般使用公有服务器即可
  • 自动连接:勾选后启动项目会自动进行服务器连接,否则需要手动连接

  • 操作对象:指定一个节点,该节点下所有的网格实例都会被视作可交互的对象,运行后可以通过项目中自带的工具进行交互,如移动、隐藏、更改材质等

提示

多人协同会为操作对象自动生成碰撞体并改变节点结构,因此不能再为操作节点添加碰撞,也不能在在节点中调用操作节点,否则会出现错误。通过脚本实现的自定义同步会在后续的版本更新中加入。建议操作对象的子节点数量控制在50个以内,否则将有可能会导致场景在一定程度上加载缓慢;

  • 应用名称:用于区分不同的多人协同场景,创建一个房间后,只用应用名称相同的项目会在房间列表中看到该房间

  • 应用校验码:用于区分相同多人协同场景的不同版本,名称相同但应用校验码不同的场景会显示在房间列表中,但无法正常加入,校验码的格式为年_月_日_校验字母(xxxx_xx_xx_x)

示例

用户A发布了一个名为”多人协同A”的项目,校验码为2020_01_01_A,给班级A使用。在做了一些调整后将校验码修改为2020_01_01_B,给班级B使用。两个班的所有人都可以看到其他人创建的房间,但不能加入对方班级的房间,A班同学加入B班同学创建的房间会提示当前版本过低,B加入A则显示版本过高。

运行项目

  1. 运行场景,会出现多人协同的交互界面,并开始下载默认的角色模型,下载完成后即可开始体验项目

  1. 开始交互前需要选择运行模式,当前可以选择PC运行、VR运行两种模式。VR模式需要连接一个支持SteamVR的头戴式显示器,如果无法正常连接则会返回PC模式。

  1. 选择模式后,如果是单人模式则会直接进入场景,如果是多人协同模式则会跳转到房间列表界面。

  1. 创建房间,在房间列表界面点击创建房间,输入房间名、房间密码(可选),点击确认创建,即可创建一个多人协同房间,这个房间可以被其他使用该项目的玩家加入。在导出项目之前,可以通过节点属性设置应用名称应用校验码让自己的房间只被使用相同项目的人加入。

项目测试

项目搭建完成后,可以导出一至多个项目并运行,在配置允许的情况下则可以在一台电脑上进行多人协同的测试。

协同功能

多人协同插件提供了基础的协同功能:

语音:加入房间后会自动加入房间所在的语音频道,与房间内的其他玩家进行语音

互动动作:让人物做出不同的动作

部件操作:移动、隐藏操作对象节点下的物体

更改材质:更改操作对象节点下的物体的材质

相机快照:可用于在场景中进行拍照

教学工具:包括标注便签、3D画笔、激光笔、空间测量四种常用教学工具,用于教学场景

交互制作

其他插件协同

多人协同插件可以自动适配现有的一些插件,将以下插件添加到多人协同项目中,可以自动完成协同:

  • 3D幻灯片播放器——播放状态同步、信号同步

  • 3D视频播放器——播放状态同步、信号同步

  • 爆炸展示——爆炸状态同步

  • 步骤提示——页面序号同步、触发信号同步

  • 人物对话——页面序号同步、触发信号同步

  • 3D面板——页面序号同步、触发信号同步

  • 3D按钮——触发信号同步

  • 菜单选择——触发信号同步

  • 动态天气——节点属性状态同步

  • 积雪特效——节点属性状态同步

  • 路径移动——播放状态同步

  • 寻路指引——节点显隐同步、信号同步

可视化脚本协同

IdeaXR从V7.x版本起,可视化脚本连接的触发事件支持多人协同触发。 场景中添加多人协同模块后, 由触发器连接的事件支持多人协同同步触发(包括键盘、鼠标、空间触发器和VR手柄触发器)。

案例操作:按下键盘上的按键或鼠标按键;

目标要求:通过在开始协同模块后连接相关逻辑单元的触发事件来实现物体的显隐、颜色切换以及动画播放的同步。

可视化交互逻辑连接如下:

案例运行效果如下图所示:

multiplayer

信号

多人协同模块支持信号事件。场景中添加多人协同模块后,选中多人协同节点,切换到信号面板可看到以下信号事件,连接信号可在对应事件发生时触发您的自定义交互事件。信号的使用详见:信号系统的应用

  • start_multi_mode:开始多人协同场景时发出
  • start_single_mode:开始单人模式时发出
  • exit_multi_mode:退出多人协同场景时发出
  • exit_single_mode:退出单人模式时发出
  • open_tool_menu:唤出工具菜单时发出
  • reset_all_position_sync:复位所有物体归位时发出
  • reset_all_visible_sync:显示所有物体时发出
  • reset_all_material_sync:还原所有材质时发出
  • photograph_completed(texture):拍照完成时发出(返回图片)
  • measure_completed(distance):测量完成时发出(返回距离)