Cocos2d-x中Box2d示例无法运行的问题
最近研究碰撞,因以前对Box2d较为熟悉,所以较为倾向于使用该引擎来实现一些东西。问题是cocos默认使用的是ChipMunk。刚解压出来的引擎,直接对cpp-tests的Box2dTest编译运行会被提示要求定义CC_ENABLE_BOX2D_INTEGRATION = 1,但是这玩意还不太好直接在文件中直接#define,看后面大概能知道其原因。
解决的办法是直接在cpp-tests项目属性的C/C++项目,预处理器选项的预处理器定义中定义,注意不能同时定义CC_ENABLE_CHIPMUNK_INTEGRATION=1。当然,定义完以后,你会发现程序出错得更离谱,不弹出要求加定义的对话框了,直接发生断言错误……
跟踪一下,断言发生在CCPhysicsSprite.cpp中:
void PhysicsSprite::setB2Body(b2Body *pBody)
{
#if CC_ENABLE_BOX2D_INTEGRATION
_pB2Body = pBody;
#else
CCASSERT(false, "Can't call box2d methods when Box2d is disabled");
#endif
}
cpp-tests和包含CCPhysicsSprite.cpp的libExtensions项目是平级的,也就是cpp-tests中修改的预定义是不作用到libExtensions上的,哥们这个倒是很快反应过来了,就是找CCPhysicsSprite的时候眼拙,看到libcocos2d项目里面去了,改错了,半天搞不定,。网上狂搜,终于有哥们贴出来同样的过程,点这里。完事,尼玛,选择cocos2dx就是自己找虐的节奏。
搞定以后,可以看看这位弟兄的学习文章,对着代码看还是很清楚的。