射线检测属于物理系统大类中的小类,Cocos的物理系统使用的是Box2D
射线检测建议大家先扫一下CocosCreator的官方文档
同时,@wangwenbo有个文章写的很细,算是对官方文档的补充。
以下为笔者在使用过程中遇到的坑,希望能帮到你。
1,物理系统需要在onLoad()中开启。
onLoad() {
cc.director.getPhysicsManager().enabled = true;
}
若不开启,使用射线检测的函数时会报Init()错误。只能在onLoad()方法中开启,若在start()方法中开启,虽然不报错了,但是检测不到射线碰撞。
2,射线检测的坐标都需要统一转换为世界坐标。
3,物理组件、碰撞组件,傻傻不不清楚。
笔者曾经患个错误,为一个Sprite加了碰撞组件->Box Collider
,也加了RigidBody。但是搞死检测不到射线。
后来才发现,组件加错了。应该是物理组件->Collider->Box
。添加了该Box组件后,还会自动添加其依赖的RigidBody组件。刚体自带重力,为防止下落可以设置Gravity Scale为0。
Cocos论坛上这个兄弟我估计就是这个原因导致的。