求助各位大神关于射线检测的问题,感谢

  • Creator 版本:

  • 目标平台:

  • 重现方式:

  • 首个报错:

  • 之前哪个版本是正常的:

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率:

我创建了两个碰撞体,如图,一个sprite精灵 就是如图所示的飞机, 一个sprite精灵当做墙体。
首先设想的是 飞机处有一个射线起点,墙体上方有一个终点,两点一线这样相当于组成一条射线是穿过了墙体。
按照正常情况来说,会返回一个数组,有一个碰撞点。
但是实际情况却有些出入。
我的脚本文件是挂载在飞机上的,一开始我设置射线起点和终点时,坐标起点是(this.node.getPosition.x,this.node.getPosition.y)
终点是(this.node.getPosition.x,this.node.getPosition.y + 200)
墙体是在这200的y坐标中间的,也就是说两个组成的射线穿过了墙体。
但最终返回的射线确实空数组,无论如何都检测不到。

后来尝试把起点坐标设置为(this.node.getWorldPosition().x, this.node.getWorldPosition().y)
终点坐标设置为(this.node.getWorldPosition().x, this.node.getWorldPosition().y + 200)

这样反而就可以了。

然后我把这两个点具象化显示在屏幕上,如图,发现这两个点并没有穿过墙体,却也返回了,这是什么原因呢?

为什么使用getLocation不可以,使用getWorldPosition就可以呢?

另外还有一个问题是,到底什么时候使用本地坐标系,什么时候使用世界坐标系,或者屏幕坐标系,感觉有点混乱呢。

我猜测可能涉及到坐标系的原因,希望各位大神可以解答一下。