首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >A帧激光指示器角度错误

A帧激光指示器角度错误
EN

Stack Overflow用户
提问于 2018-02-23 16:47:50
回答 1查看 525关注 0票数 0

我刚刚在A帧场景中将激光笔添加到右手,但它指向错误的方向。

A-frame Laser pointing 45deg to the left

在此图像中,我使用Oculus Touch控制器指向塔上方的蓝色方框。正如你所看到的,手的指向是正确的,感觉它与我现实生活中的手的位置非常匹配,但激光向左移动了大约45度。

下面是我的代码:

代码语言:javascript
复制
<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版本

EN

回答 1

Stack Overflow用户

发布于 2018-02-25 07:18:16

好的,要把答案贴在这里。hand-controlslaser-controls是不能混用的。如果你想同时支持3DoF和6DoF,那么手控和激光控制更适合6DoF。激光控制将在controllerconnected事件上设置自己的光线投射器属性。

要设置您自己的raycaster属性,请执行以下操作:

代码语言:javascript
复制
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">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48944186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档