coco2d-x碰撞检测事件

//body设置掩码
        body->setCategoryBitmask(0x3);//自身类别掩码要与other碰撞掩码进行按位运算,包含就碰撞,不包含就穿透
	body->setCollisionBitmask(0x3);
	body->setContactTestBitmask(0x3);// Contact 连接测试掩码 控制碰撞事件 要与 Category进行运算
boxBodyCircle->setCategoryBitmask(0x1);
	boxBodyCircle->setCollisionBitmask(0x1);
	boxBodyCircle->setContactTestBitmask(0x3);
//添加碰撞事件
// 碰撞检测事件 整个物理世界碰撞事件都在这里
	EventListenerPhysicsContact *physicsConstact = EventListenerPhysicsContact::create();

//碰撞进入
	physicsConstact->onContactBegin=CC_CALLBACK_1(HelloWorld::onCollsionEnter,this);
//填两个参 EventListenerPhysicsContact的对象,以及碰撞检测的对象						
	getEventDispatcher()->addEventListenerWithSceneGraphPriority(physicsConstact,rootNode);
这是回调函数
bool HelloWorld::onCollsionEnter(PhysicsContact & contact)
{
	log("bool HelloWorld::onCollsionEnter");
	std::string bobyA = contact.getShapeA()->getBody()->getName();
	std::string bobyB= contact.getShapeB()->getBody()->getName();
	return true;// 返回false Trigger  模式  true 碰撞模式
}
physicsContact->onContactPostSolve = CC_CALLBACK_2(HelloWorld::onCollsionStay, this); //持续碰撞

physicsContact->onContactSeparate = CC_CALLBACK_1(HelloWorld::onCollistionExit, this); // 离开碰撞

physicsContact->onContactPreSolve = CC_CALLBACK_2(HelloWorld::onContactPreSolve, this); // 持续触发

猜你喜欢

转载自blog.csdn.net/piyixia/article/details/88749727