listener->onContactBegin = (PhysicsContact& contact){
log("touchStart");
auto spriteA = (Sprite*)contact.getShapeA()->getBody()->getNode();
auto spriteB = (Sprite*)contact.getShapeB()->getBody()->getNode();
int cateA = spriteA->getPhysicsBody()->getCategoryBitmask();
int contA = spriteA->getPhysicsBody()->getContactTestBitmask();
int collA = spriteA->getPhysicsBody()->getCollisionBitmask();
int cateB = spriteB->getPhysicsBody()->getCategoryBitmask();
int contB = spriteB->getPhysicsBody()->getContactTestBitmask();
int collB = spriteB->getPhysicsBody()->getCollisionBitmask();
log("cateA:%d , cateB:%d",cateA,cateB);
log("contA:%d , contB:%d",contA,contB);
log("collA:%d , collB:%d",collA,collB);
log("cateA & contB:%d",cateA&contB);
log("cateB & contA:%d",cateB&contA);
log("cateA & collB:%d",cateA&collB);
log("cateB & collA:%d",cateB&collA);
}
```
输出结果:
touchStart
cateA:-1 , cateB:-1
contA:-1 , contB:-1
collA:-1 , collB:-1
cateA & contB:-1
cateB & contA:-1
cateA & collB:-1
cateB & collA:-1
这是教程上说的
“一个body的CategoryBitmask和另一个body的ContactTestBitmask的逻辑与的结果不等于0时,接触事件将被发出,否则不发送。
一个body的CategoryBitmask和另一个body的CollisionBitmask的逻辑与结果不等于0时,他们将碰撞,否则不碰撞”
理论上不是应该 即会碰撞也会发送消息的吗?
可结果却是 发送了消息 却没有碰撞效果(如下图:test.gif);
求大神解惑 啊。。。。
一夜过去鸟 咋木有人回帖啊啊。。。版主大大 你在哪。。。。



人呢 。。。。。
我是一只小青蛙
再次发现一个很奇怪的问题。。
spriteA,spriteB;
spriteA->getbody()->setContactTestBitmask(0xFFFFFFFF);
spriteB不做任何操作;
这样即会碰撞 也会检测;
但是setContactTestBitmask(0xFFFFFFFF); 有和没有有啥区别啊,这根本是无用操作好吧。。。。。
我用的是cocos2dx 3.2 真心不知道这是闹哪样 我的引擎真的有问题吗。。。。