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