求助,Cocos2d-x 3.1 中的EventListenerPhysicsContact添加侦听后没有反应

跳入新版本的坑,发现有不少和旧版本略有不同的地方,这次遇到的问题代码是这样的:

void HelloWorld::onEnter()
{
Layer::onEnter();

auto contactListener = EventListenerPhysicsContact::create();
contactListener->onContactBegin = CC_CALLBACK_1(HelloWorld::onContactBegin, this);

auto dispatcher = Director::getInstance()->getEventDispatcher();

dispatcher->addEventListenerWithSceneGraphPriority(contactListener, this);
}

bool HelloWorld::onContactBegin(PhysicsContact &contact)
{
if(ball->getPositionY() <= 0.0f)
{
auto gameOverScene = GameOverScene::create();
Director::getInstance()->replaceScene(gameOverScene);
}

return true;
}

编译链接一切良好,简单调试也看到事件派发器确实有将侦听器添入,问题就在于运行时始终没有任何事件发生。。。可能只是个简单的问题,不过我还是暂时没找到症结所在

楼主 是确定要 用物理碰撞检测么 。。。

如果是的话 那两个碰撞物体的 type要一致

1,给Node设定PhysicBody,并添加形状
2,isDynamic(true)才会碰撞(只要一方动态即可)
3,设置类型:setCategoryBitmask,是一个整数,例如A为1,B为2,C为3
4,设置碰撞过滤,例如A要与B和C碰撞,设置a->setContactTestBitmask(2|3)

运行的时候2|3 与物体B或者C相交时取逻辑AND操作,结果为true,就会触发接触(Contact)通知
:2::2:

谢谢了,类型是一致的,我自己搞定了,感谢您的回答

谢谢了,问题已经解决了,感谢您的回答

楼主怎么解决的 按2楼的方法 能够检测到contact事件了 两个contact的body可以重合了。。。。怎么让他们不重合呢

解决了也不发个解决方法出来……:10: