射线检测疑问

如何检测指定层?如何获取某个指定层的掩码?

找到官方文档了

借帖同问,好像是每个collider都要设置它的group,然后才能调用getGroup,真的要这么麻烦吗?而且用layer取到的也是数字,还不是自己设置的layer名字

1.2.0版本可以不用手动配了,可以在项目设置里 physics 配置碰撞矩阵。然后 通过 RigidBody 组件就可以编辑器设置 Group 了。
但是 不能给单独的 BoxCollider 添加group, 这样静态物体怎么设置Group呢 ?@gameMaster

分组跟分层掩码时三个事情。分组=setGroup,分层时面板上的layer,掩码就是setmask。我测试了一个多小时,也就测出来这点东西。目前我试过setmask跟setgroup.layers暂时没用到。

是不是在代码里要设置setMask和setGroup?如白羊同学所说,我场景无数个静态的物体,组件只加了BoxCollider,这种还得挨个写代码处理吗?

之前的 物理碰撞和 渲染 layer 分组是共用的,现在拆开了。layer 是只用于区分渲染的标签,group/mask 是用于物理检测的。

这东西看你需求,你需要用到分组或者掩码采取设置相应节点的。目前只看到官方文档里面说在代码里面设置。
对于有多个collider可以统一写在一个脚本里面,节点挨个查找collider,找到了而且需要加分组/掩码的就set.省时省力。

https://docs.cocos.com/creator3d/manual/zh/physics/physics-group-mask.html?h=分组

我也记得以前的碰撞分组跟layer好像直接在碰撞分组里面设置就完了。1.2用了测了好多遍才明白这东西已经分开了,蛋疼的很。

我就想用个Unity里面tag的功能,OnTrigger/ColliderEnter能根据预先设置的tag区分处理事件就行 :rofl:
所以现在是非得每个都挂个脚本设置一个SetGroup?这好烦

只能看官方之后加不加了,目前这样确实挺麻烦的。这样设置唯一好处就是灵活度比较高吧。

tag好像不用设置分组吧,tag直接在面板上设置或者代码统一设置,然后再事件里面判断读取就完了。

3D里面哪里有Tag啊?

collider上面好像没有了,2d里面有。那就写代码统一设置呗,也没办法。

掩码值setMask(x)的x必须为2进制,不建议使用0,1和-1.这三个为特殊默认值。多个分组就直接mask1+mask2即可。