cocos2dx 物理碰撞
https://www.cnblogs.com/JiaoQing/p/3906780.html 四个响应函数 1 EventListenerPhysicsContact* evContact = EventListenerPhysicsContact::create();//创建一个物理世界的碰撞事件
2 evContact->onContactBegin = [](PhysicsCo
1 EventListenerPhysicsContact* evContact = EventListenerPhysicsContact::create();//创建一个物理世界的碰撞事件
2 evContact->onContactBegin = [](PhysicsContact& contact)
3 {
4 CCLOG("Begin!\n");
5 return true;
6 };
7 evContact->onContactPreSolve = [](PhysicsContact& contact,PhysicsContactPreSolve& solve)
8 {
9 CCLOG("PreSolve!\n");
10 return true;
11 };
12 evContact->onContactPostSolve = [](PhysicsContact& contact,const PhysicsContactPostSolve& solve)
13 {
14 CCLOG("PostSolve!\n");
15 };
16 evContact->onContactSeperate = [=](PhysicsContact& contact)//该函数在两个碰撞的刚体分离后调用
17 {
18 CCLOG("Seperate!\n");
19 auto bodyA = (Sprite*)(contact.getShapeA()->getBody()->getNode());//两个碰撞刚体相对应的节点之A
20 auto bodyB = (Sprite*)(contact.getShapeB()->getBody()->getNode());//两个相碰撞刚体对应节点之B
21 if(!bodyA||!bodyB)//按理说碰撞发生之后不会发生有一个刚体的节点不存在的情况,但是实际测试时发现bodyA或bodyB有为NULL的情况,因此我们在这里做一个判断排除节点为空的情况
22 return;
23 int tagA = bodyA->getTag();
24 int tagB = bodyB->getTag();
25 if(tagA == 3)
26 {
27 bodyA->removeFromParentAndCleanup(true);
28 }
29 if(tagB == 3)
30 {
31 bodyB->removeFromParentAndCleanup(true);
32 }
33 // prop->setVisible(true);
34 };
35 _eventDispatcher->addEventListenerWithSceneGraphPriority(evContact,this);//注册碰撞事件
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。