-
Creator 版本:2.2.0
-
目标平台:
比如一个刚体,需要对分组A产生物理效果(不能穿透它),但是对分组B不产生物理效果(可以穿透它)(分组B其实就是该刚体所在的分组)。有什么办法能做到嘛~
试了下在碰撞发生时去设置sensor,但是碰撞回调时撞击效果已经发生了~
Creator 版本:2.2.0
目标平台:
比如一个刚体,需要对分组A产生物理效果(不能穿透它),但是对分组B不产生物理效果(可以穿透它)(分组B其实就是该刚体所在的分组)。有什么办法能做到嘛~
试了下在碰撞发生时去设置sensor,但是碰撞回调时撞击效果已经发生了~
在项目设置里面更改分组碰撞就好了 你要的就是同一组之间不碰撞 不同分组有碰撞 就不要勾自身的碰撞
谢谢,但我同时希望它能有个传感器效果,获得碰撞回调,难道要自己检测或者再用普通碰撞盒吗
有解决吗大佬,在做绳子关节的时候遇到的同样的问题,想检测绳子缠绕在一起的的回调
B组物体的Collider 组件 勾上 isTrigger属性,监听触发事件
物理事件,有两种事件,一种是碰撞事件,一种是触发事件,分别由碰撞器和触发器产生
碰撞器产生碰撞事件,触发器产生触发事件
触发器是 Is Trigger 属性为 true 的碰撞组件。当发生碰撞时,触发器不会产生碰撞效果,所以触发器只用于碰撞检测。
碰撞器是 Is Trigger 属性为 false 的碰撞组件。有物理效果,两个物体运动,碰到一起,两个物体会撞飞,碰撞器既可以进行碰撞检测,又有物理效果
勾选isTrigger属性后B组物体就只能当做一个传感器了吗,还能和别的物体发生物理碰撞吗
会检测到碰撞了,没有物理效果
那就不行呀,我做的绳子会和其他的物体发生物理碰撞 因为用的旋转关节 所以只能取消绳子与绳子的碰撞,否则关节会纠缠在一起。取消掉绳子之间的碰撞之后就检测不到绳子和绳子之间的碰撞了,类似于用绳子将另一个A物体绕一圈,然后想得到A物体是否被圈起来,目前是用射线检测做的,从A物理的中心向四个方向做射线检测来判定四周是否都是绳子
当时没有解决这个问题,后来看了官方案例,有一个单向穿透的例子,其实应该有用。在刚体碰撞回调的时候,onBeginContact(contact: cc.PhysicsCollider, selfCollider: cc.PhysicsCollider, otherCollider: cc.PhysicsCollider) { }
其中的contact有个disabled属性,在碰撞发生后,将contact的disabled属性设为true 将不再相应此次碰撞的物理效果,从而达到物理的单向穿透。什么时候设置就看自己的需求了,应该能满足我之前的这个需求,不知道能不能满足你这个需求~
onBeginContact(contact: cc.PhysicsCollider, selfCollider: cc.PhysicsCollider, otherCollider: cc.PhysicsCollider) {
if(xxxx){
//忽略这次物理效果
contact.disabled = true;
return;
}
//正常的物理效果
}`
绳子和绳子 本来之间就不应该碰撞, 你想知道绳子有没有圈到物体,应该不存在物理效果,只是检测,使用的是触发器,那么绳子 和其他物体的 Collider 组件都是触发器才对,监听触发事件。触发器没有物理效果