关于cocos2d-x 3.2物理世界的碰撞检测,抓狂

刚学cocos2d-x的菜鸟,最近写flappybird掉坑里了,
对小鸟和地板做了这些设置:
bird->setTag(2);
birdBody->setCategoryBitmask(0x0001);
birdBody->setContactTestBitmask(0x0001);
birdBody->setCollisionBitmask(0x0001);
将小鸟、地板、柱子都设置PhysicsBody会导致地板和柱子碰撞下面那行柱子出不来,
所以我只对小鸟和地板设置了PhysicsBody。

关于PhysicsWorld碰撞检测,我在头文件里这样定义的:virtual bool onContactBegin(PhysicsContact& contact);
在cpp这样实现的:void GameScene::add_hitTestListener(){
auto hitTestListener = EventListenerPhysicsContact::create();
hitTestListener->onContactBegin = CC_CALLBACK_1(GameScene::onTouchesBegan, this);

    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(hitTestListener, this);

}

bool GameScene::onContactBegin(PhysicsContact& contact)
{

return true;

}

onContactBegin函数不知道如何实现,所以没写。但是这样也会报错,
网上找了很多关于碰撞检测的实现,都没有成功,甚至3.0的API在3…2上也不能用,在cocos2d-x 3.2中怎样才能实现碰撞检测?

请把代码粘贴在这里

将地板和柱子的 PhysicsBody 设置为静态 setDynamic(false);, 小鸟位置为动态 。

在onContactBegin中使用tag判断是那种物体的判断。 2个静态物体之间不会产生碰撞。

Sprite* spriteA=(Sprite*)contact.getShapeA()->getBody()->getNode();
Sprite* spriteB=(Sprite*)contact.getShapeB()->getBody()->getNode();
if (spriteA == NULL || spriteB == NULL) {
    return false;
}
int tagA=spriteA->getTag();
int tagB=spriteB->getTag();

CCLOG("检测到碰撞  tagA : %d , tagB : %d" , tagA, tagB);