【问题标题】:A-frame laser pointer wrong angleA字型激光笔角度错误
【发布时间】:2018-02-25 07:18:15
【问题描述】:

我刚刚在我的 A-Frame 场景中将激光指示器添加到右手,它指向错误的方向。

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",这确实指向了正确的方向,因此它似乎是激光组件的错误。我可以使用光线投射器并编写自己的碰撞逻辑,但更喜欢使用通过激光获得的鼠标事件。

第二次更新:刚刚发现如果我同时添加光线投射器和光标组件,我将获得与添加激光组件完全相同的功能,但光线投射指向正确的方向。

这已经解决了我遇到的问题,但我将把它留在这里,因为我确信其他人会遇到这个问题,直到激光组件被修复。

我在这里提交了一个问题https://github.com/aframevr/aframe/issues/3396

为了清楚起见,我使用的是 A-frame v0.7.1

【问题讨论】:

    标签: aframe


    【解决方案1】:

    好的,所以在这里发布答案。 hand-controlslaser-controls 不适合混合使用。如果您想同时支持 3DoF 和 6DoF,则手控更多用于 6DoF,而激光控制则更多。 Laser-controls 将在 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">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 2017-12-20
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多