Cocos2d-x3.2总结(四)使用物理引擎进行碰撞检测

讲的很详细,特别适合初学者,其中一些小细节楼主没有添加,在此添加下,
① 在HelloWorld.h中添加代码:bool onContactBegin(const PhysicsContact& contact);
②HelloWorld.cpp中ballOne=Sprite::create(“Ball.jpg”);和ballTwo=Sprite::create(“Ball.jpg”); ,改为 auto ballOne=Sprite::create(“Ball.jpg”); 和auto ballTwo=Sprite::create(“Ball.jpg”);
③以及 代码13 上面的“现在,我把ballTwo的分类掩码设置为0x0001,碰撞掩码设置为0x0001,” 中 “ballTwo”改为ballOne。
感谢楼主这么花时间的,这么详细的给我们上了这样一节细致,易懂的课!!!

收藏收藏了. 谢谢 准备学

想问如何知道是和哪个物体碰撞了?如果有3个球abc,a和bc碰撞的反应要不一样,在碰撞回调函数中如何区分?

根据setTag的值判断那两个物体碰撞来进行处理

作者辛苦,这样的文章值得看

有时候PhysicsContact.getShapeA()->getBody->getNode()为空,怎么办?

你确定已经把物体添加到了指定的精灵中?

:2:怎么用它做骨骼动画和帧动画的碰撞检测。每一帧碰撞区域都不一样啊。

文中不是提到一些不规则形状的物理碰撞吗?往那方面推展一下,自己查多点资料,应该可以解决问题。

好贴:2::2::2::2::2::2::2::2::2::2::2::2::2::2::2::2:

楼主 我想请教两个问题。
我调用的DebugDraw 但是看不到绘制出的东西 并且 断点是有进去的。
当为一个精灵添加好一个刚体 激活刚体之后 我手动更改了精灵的坐标 到另一个刚体上。 按理说应该算碰撞。 但是却没有进回调。 各种掩码是设置好了的。

请问楼主,有没有办法让人物不颠来倒去?

我把物理引擎运用到我的游戏主角上面,主角在往下跳的时候,碰撞以后就会颠来倒去,当然我是符合物理模拟的,但是如果我希望主角不要翻跟头,只是左右移动,那我该怎么设置呢?

node->getPhysicsBody()->setRotationEnable(false);
这个应该可以

非常感谢!

再请问,怎么设置才能让人不会碰撞后弹起?
我设置了setRestitution为0,可是没有用,还是有时候会弹起,而且弹很高。怎么彻底关闭这样的功能。

你好楼主,我按照你的设置了3个掩码之后,能触发回调,但是碰撞检测却失效了~

你可以试试开启调试模式看看,
–开启物理引擎的调试模式
self:getPhysicsWorld():setDebugDrawMask(cc.PhysicsWorld.DEBUGDRAW_ALL)

谢谢分享,受教了

其实这个问题box2d也有

谢谢。 搞定了~