网络化的aframe动态房间无法使用简单的rtc



问题

嗨,我已经使用一种形式重新混合了一个网络aframe动态房间的模板:

https://glitch.com/edit/#/权力百合煎饼?路径=公用%2Fscene.html%3A41%3A0

出于某种原因,每当我将这些代码行添加到<a-scene>标签时,整个项目都会中断:

networked-scene="
room: audio;
adapter: easyrtc;
audio: true;
video: true;
debug: true;
inspector=https://cdn.jsdelivr.net/gh/aframevr/aframe-inspector@master/dist/aframe-inspector.min.js"

我想知道是否有办法将这些代码行添加到<a-scene>标签中,使其看起来像这样:

<a-scene dynamic-room networked-scene="
room: audio;
adapter: easyrtc;
audio: true;
video: true;
debug: true;
inspector=https://cdn.jsdelivr.net/gh/aframevr/aframe-inspector@master/dist/aframe-inspector.min.js"
>

但有了它,动态房间仍然可以工作。这意味着,如果两个人在不同的房间里,他们将看不到对方,但如果他们在同一个房间,他们将能够看到对方。如何做到这一点?

链接

A型框架网站:https://aframe.io

网络A框架文档:https://www.npmjs.com/package/networked-aframe

包含我当前代码的项目:https://glitch.com/edit/#/权力百合煎饼?路径=公用%2Fscene.html%3A41%3A0

afaikdynamic-room组件被设计为附加networked-scene,而不是更新它(因为它不处理更新)。这就是为什么动态房间示例场景只有dynamic-room组件的原因,也是dynamic-room不能与networked-scene一起使用的原因。

我会把所有的networked-scene属性都放到dynamic-room设置中,但也可以让两者像你想要的那样协同工作:

<a-scene dynamic-room networked-scene>

解决此问题的一种方法是使用networked-sceneconnectOnLoad属性-让dynamic-room更改房间,然后决定何时连接。

由于networked-scene在init中检查connectOnLoad,因此它将始终使用默认值。我们需要确保默认值是false而不是true


所以需要做两件事:

  1. 在场景初始化之前更改networked-scene默认值:

    <script>
    // This is hacky, another way would be copying the component and make it react to updates
    AFRAME.components["networked-scene"].schema.connectOnLoad.default = false;
    </script>
    <a-scene dynamic-room networked-scene>
    
  2. 设置房间id时发出connect

    // set the room id
    el.setAttribute("networked-scene", "room", roomID);    
    // notify `networked-scene` that you're ready to connect 
    el.emit("connect", null, false);
    

在这个小故障中检查一下

相关内容

  • 没有找到相关文章

最新更新