现在才发现creator3d和creator3.0物理碰撞不能分组碰撞,是不是引擎方没提供方法

查看了官方文档也没查到相关信息。
我目前场景里有很多物体,想做分图层做碰撞,如子弹只能跟角色做碰撞,不能子弹跟子弹碰撞,目前做不到碰撞过滤。creator2.0 的2d物理碰撞还能做分组管理,3d和3.0就不行了。

对比一下其它游戏引擎的碰撞管理

Laya 可以用代码设置碰撞组
collider.collisionGroup = group1 | group2 | group1; //指定碰撞体和哪些碰撞组有碰撞

Unity 系统设置里有做碰撞层管理,可以设置哪个层和哪个层能碰撞,哪个不能。
或者可以通过代码忽略碰撞
Physics.IgnoreCollision(collider1,collider2, 是否忽略)。//是否忽略两个碰撞体碰撞
Physics.IgnoreLayerCollision(layer1,layer2,是否忽略)//是否忽略两个图层的碰撞体之间的碰撞
这些物理接口非常方便使用

cocos引擎组是否可考虑加上一些常用的物理接口

有的,在项目设置里,有一个关于物理的配置

1赞

这个看过了,没看懂,现在节点通过图层管理了,你这个碰撞矩阵代表什么,index和Name需要单独命名,好像和图层没关系,现在节点也没有2.0那个group属性了,设置这个矩阵代表什么?而且这个碰撞矩阵在官方文档加个教程啊,放在这里谁看得懂。还有代码也没提供什么接口可以动态管理碰撞组的接口。

不说别的,你可以做一个demo,看做不做得出,场景里有3个碰撞体,A,B,C。只允许A和C碰撞,B和C碰撞,A和B不能碰撞,你做不做得出

碰撞图层和节点图层概念一样,但实际不是一个东西,物理这里有自己的碰撞层,group 移到 rigidBody 身上了,可以看一下这里

https://docs.cocos.com/creator/3.0/manual/zh/editor/project/physics-configs.html#碰撞矩阵

是可以做的出的,我拿快上车项目是有实践过的

文档入口是在这里

碰撞组你们居然放到刚体管理了。节点不能设置,碰撞器也不能设置,只能到刚体设置。其实碰撞管理放到碰撞器管理比较好一点吧,碰撞器不是一定要依赖于刚体而存在,也可以独立存在,有时为了做个碰撞分组,比如地面,大山,建筑,是静态的,加个碰撞器就够了,为了碰撞分组,我必须要给这些元素加个刚体,这真是要哭的节奏,2.0的基于节点组做碰撞管理的体验都比你这个好得多。希望别搞这种刚体管理碰撞组体验很差的做法。

其实学学laya和unity基于碰撞器管理分组挺好的啊,虽然是竞争对手,学别人的优点还是可以的。
Laya 碰撞分组
collider.collisionGroup = group1 | group2 | group1; //指定碰撞体和哪些碰撞组有碰撞

unity碰撞分组
Physics.IgnoreCollision(collider1,collider2, 是否忽略)。//是否忽略两个碰撞体碰撞
Physics.IgnoreLayerCollision(layer1,layer2,是否忽略)//是否忽略两个图层的碰撞体之间的碰撞

还有个问题,目前3d物理射线也是需要刚体存在的,我检测一根射线射到地面哪个位置,单独给地面加碰撞器是不行的,必须还要给地面加个刚体组件。射线碰撞检测应该是几何运算,算射线和碰撞器的AABB碰撞盒是否有相交就行了,为什么一定要加个完全无关的第三者刚体进来才可以做射线碰撞检测呢。目前unity和laya的射线检测都不需要加刚体

不加刚体组件默认为静态刚体,射线检测不强制节点要有刚体组件,请看文档先

忘记强调了,是creator3.0的2d物理射线,3d物理射线我测过了,没有刚体也可以检测到射线碰撞。但是2d就不行,只要场景里不存在Rigidbody2D 或者 Collider2D,使用2d物理射线必定报物理错误异常。

我之前发过一个帖子,里面有详细图解