Javascript 运行时设置摄影机位置与navmesh冲突

Javascript 运行时设置摄影机位置与navmesh冲突,javascript,html,aframe,virtual-reality,Javascript,Html,Aframe,Virtual Reality,我正在做一个三层公寓的漫游。导航约束通过覆盖每层(包括楼梯)的navmesh完成 我想提供一个快捷方式,用户可以点击一个按钮,跳到相应的楼层。到目前为止,位置的改变是有效的,但一旦玩家开始行走,他们就会被拉回到单击按钮之前的相同Y位置(x和z位置的改变是有效的)。例如,从一楼跳到三楼是可行的,但一旦球员开始走路,他们又回到了一楼 position.set值不是随机选择的–我在loading inspector中检查了三楼camRig的位置,并使用了这些值,因此我不确定这为什么不起作用。有没有办法

我正在做一个三层公寓的漫游。导航约束通过覆盖每层(包括楼梯)的navmesh完成

我想提供一个快捷方式,用户可以点击一个按钮,跳到相应的楼层。到目前为止,位置的改变是有效的,但一旦玩家开始行走,他们就会被拉回到单击按钮之前的相同Y位置(x和z位置的改变是有效的)。例如,从一楼跳到三楼是可行的,但一旦球员开始走路,他们又回到了一楼

position.set值不是随机选择的–我在loading inspector中检查了三楼camRig的位置,并使用了这些值,因此我不确定这为什么不起作用。有没有办法避免这个问题

编辑:我做了一个简单的例子,再现了这个问题:

这是我的代码:

    <a-entity id="camRig" 
               movement-controls="speed: 0.3; 
               constrainToNavMesh: true" 
               position="-12.5 0 -2" 
               rotation="0 270 0">
      <a-entity id="cam" camera 
              look-controls="pointerLockEnabled: true;" 
              position="0 2.4 0"></a-entity>
    </a-entity>

<a-entity id="navmesh" gltf-model="#collider" nav-mesh position="0 0 0" scale="1.6 1.6 1.6" visible=„false“></a-entity>
<a-entity id="house" gltf-model="#apartment" position="0 0 0" scale="0.016 0.016 0.016"></a-entity>



document.querySelector("#changeFloorButton").addEventListener('click', function() {
          document.querySelector("#camRig").object3D.position.set(-1, 4, 2);
      });

document.querySelector(“#changeFloorButton”).addEventListener('click',function()){
document.querySelector(“#camRig”).object3D.position.set(-1,4,2);
});

在“传送”周围时,您需要重置导航数据:

// provided player has the camRig
player.components['movement-controls'].updateNavLocation()
否则,如果您移动得太快(在原语示例中似乎如此),将您留在navmesh中的计算会将您传送回navmesh

摆弄原语。

摆弄你的东西

@L.Maher很高兴我能帮上忙:)