带有天空的Raycaster相机与光标相交

时间:2019-05-23 15:14:11

标签: aframe

我刚刚开始使用A型镜架进行开发,如果答案显而易见,请原谅。 在我的项目中,我想获得用户正在看的天空的位置。为此,我在相机内安装了一个光线投射器,到目前为止效果还不错。

HTML

<a-camera listener>
    <a-entity raycaster="far: 1000" position="0 -0.9 0" rotation="0 0 0"></a-entity>
</a-camera>

<a-sky follow-intersection
     id="sky"
     src="#skybox-image">

</a-sky>

TS

AFRAME.registerComponent("follow-intersection", {
  init: function() {
    this.el.addEventListener("raycaster-intersected", evt => {
      this.intersectingRaycaster = evt.detail.el.components.raycaster;
    });
    this.el.addEventListener("raycaster-intersected-cleared", () => {
      this.intersectingRaycaster = null;
    });
  },
  tick: function(t) {

      if (!this.intersectingRaycaster) {
        return;
      }

      const intersection = this.intersectingRaycaster.getIntersection(this.el);

      if (intersection) {
        let point = intersection.uv;
        console.log(point.x, point.y);
      }

到目前为止,这很好,问题是在我将光标设置在场景中后(项目所需)

<a-scene
  cursor="rayOrigin: listener"
>

我总是会得到与光标不相交的交点。

我怎么只能得到相机的交叉点?谢谢!

1 个答案:

答案 0 :(得分:0)

我认为a-scene中的光标不是必需的。您可以这样做:

<a-camera listener>
    <a-entity cursor raycaster="far: 1000" position="0 -0.9 0" rotation="0 0 0"></a-entity>
</a-camera>