上一篇记录了chipmunk的使用流程,其实还算不上是碰撞检测,但在游戏中需要利用这些碰撞事件来执行对应的动作,这就涉及到另一部分的内容了,即怎样在发生碰撞事件的时候调用对应的工作代码。
首先是为碰撞事件设定回调函数:
在chipmunk中有两种设定碰撞回调函数的方法,一种是cpSpaceSetDefaultCollisionHandler,另一种是cpSpaceAddCollisionHandler。
cpSpaceSetDefaultCollisionHandler是为物理空间设定默认的碰撞回调函数,它的设置是针对全局的,也就是物理空间里任何对象的碰撞都会执行设定的回调函数:
void cpSpaceSetDefaultCollisionHandler(
cpSpace *space,
cpCollisionBeginFunc begin,
cpCollisionPreSolveFunc preSolve,
cpCollisionPostSolveFunc postSolve,
cpCollisionSeparateFunc separate,
void *data
);
cpSpaceAddCollisionHandler用来设定自定义的碰撞回调规则,比上面多出了两个参数,用来指定物理空间中哪类对象碰撞时执行回调函数:
void cpSpaceAddCollisionHandler(
cpSpace *space,
cpCollisionType a, cpCollisionType b,
cpCollisionBeginFunc begin,
cpCollisionPreSolveFunc preSolve,
cpCollisionPostSolveFunc postSolve,
cpCollisionSeparateFunc separate,
void *data
);
由于对其中四个参数不太了解,
cocos2d-x 游戏开发:碰撞检测与回调函数实战

这篇博客探讨了在cocos2d-x游戏开发中进行简单碰撞检测的进阶内容,包括如何设定碰撞事件的回调函数。介绍了cpSpaceSetDefaultCollisionHandler和cpSpaceAddCollisionHandler两种方法,并讲解了如何在碰撞开始时获取对象信息,如对象类型和坐标。博主还提供了一个用于销毁碰撞对象的postStepRemove回调函数的示例代码,并分享了源码链接。
最低0.47元/天 解锁文章
&spm=1001.2101.3001.5002&articleId=9018029&d=1&t=3&u=d3359acb9b854121aa8b56d5242bdb0f)
8865

被折叠的 条评论
为什么被折叠?



