coco2d-x碰撞检测事件

本文详细介绍了cocos2d-x游戏引擎中如何实现物体间的碰撞检测,并探讨了如何设置和处理碰撞事件,包括触发条件、检测算法以及在实际游戏场景中的应用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//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); // 持续触发

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值