我刚刚在A帧场景中将激光笔添加到右手,但它指向错误的方向。
A-frame Laser pointing 45deg to the left
在此图像中,我使用Oculus Touch控制器指向塔上方的蓝色方框。正如你所看到的,手的指向是正确的,感觉它与我现实生活中的手的位置非常匹配,但激光向左移动了大约45度。
下面是我的代码:
<a-entity id="cameraRig" position="-25 -10 138" rotation="0 -25 0">
<a-entity id="head" camera="near: 0.1; far: 10000" wasd-controls look-controls></a-entity>
<a-entity id="teleHand" hand-controls="left" teleport-controls="cameraRig: #cameraRig; teleportOrigin: #head; type: parabolic; button: trigger; collisionEntities: #terrain, #bridgeFull"></a-entity>
<a-entity id="pointerHand" hand-controls="right" laser-controls></a-entity>
有没有办法让我重新定位激光?理想情况下,从指向手指出来,但如果不是,那么只需指向正确的方向就可以了吗?
更新:我只是尝试了raycaster="showLine: true",这确实指向了正确的方向,所以它似乎是激光组件的一个bug。我可以使用光线投射器并编写自己的碰撞逻辑,但我更喜欢使用激光获得的鼠标事件。
第二个更新:刚刚发现,如果我同时添加光线投射器和光标组件,我将获得与添加激光组件完全相同的功能,但光线投射指向正确的方向。
这已经解决了我的问题,但我将把这个问题留在这里,因为我相信其他人会遇到这个问题,直到激光组件被修复。
我在这里提交了一个问题,https://github.com/aframevr/aframe/issues/3396
为了清楚起见,我使用的是A帧的0.7.1版本
发布于 2018-02-25 07:18:16
好的,要把答案贴在这里。hand-controls和laser-controls是不能混用的。如果你想同时支持3DoF和6DoF,那么手控和激光控制更适合6DoF。激光控制将在controllerconnected事件上设置自己的光线投射器属性。
要设置您自己的raycaster属性,请执行以下操作:
AFRAME.registerComponent('force-raycaster', {
schema: {
direction: {type: 'vec3'},
origin: {type: 'vec3'}
},
init: function () {
this.el.addEventListener('controllerconnected', {
// Wait for laser-controls to set its raycaster properties.
setTimeout(() {
this.el.setAttribute('raycaster', this.data);
}, 50);
});
}
});
<a-entity laser-controls hand-controls force-raycaster="direction: 0 0 -1; origin: 0 -0.1 0">https://stackoverflow.com/questions/48944186
复制相似问题