-
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就可以呢?
另外还有一个问题是,到底什么时候使用本地坐标系,什么时候使用世界坐标系,或者屏幕坐标系,感觉有点混乱呢。
我猜测可能涉及到坐标系的原因,希望各位大神可以解答一下。

