偷看后进入link遍历传送门,无需点击

Enter link traversal portal after peeking, without having to click

我正在使用展示示例 link-traversal

我正在尝试启用这样的功能:一旦您窥视门户内部,它就会自动将您带入 link,而无需单击。

我正在考虑创建类似 "portal peeked" 事件侦听器的东西,但真的不知道从哪里开始。

有没有人知道我如何才能做到这一点?

我是这样实现的:检测玩家何时移过不可见的触发几何体,即 "teleportation pad",并使用光线投射器触发事件​​,可以监听和处理该事件,执行传送。
1) 创建一个位于地板上的垫子或平面(或任何形状),这样当用户在它上面时,传送就会发生。将 class='teleport' 组件附加到其实体。
2) 创建一个光线投射器,附加到播放器的 child,每帧向下 (0 -1 0) 发射。当它击中 pad 时,将抛出事件并可以实现传送。

这是设置它的一种方法(未经测试,但大意是这样的):

<a-entity id="player" collider-check>
  <a-entity raycaster="objects: .teleport" position="0 1 0" rotation="-90 0 0">  
  </a-entity>    
</a-entity>
<a-entity id="pad" class="teleport" geometry="primitive: plane" position="0 0 0" visible="false"></a-entity>

在这里您可以找到关于制作 raycaster 的详细信息。

https://aframe.io/docs/0.9.0/components/raycaster.html#sidebar

然后制作一个附加到您的播放器的自定义组件 ('collider-check')。在其中,添加光线投射事件的侦听器,以及通过传送处理事件的函数。

AFRAME.registerComponent('collider-check', {
  dependencies: ['raycaster'],

  init: function () {
    this.el.addEventListener('raycaster-intersection', function () {
      console.log('Player hit something!');
    });
  }
});

这里是一个光线投射事件的例子,它在击中已知目标 object 时触发。 https://glitch.com/~rollover-rotate

这与您需要的有点不同(使用您不需要的游标),但它展示了如何设置光线投射器、侦听碰撞事件并使用函数处理它,所有这些在自定义组件中。