将cocos2d集成的box2d类库由2.1.2升级为2.2.0版本

来源:互联网 发布:数据魔方专业版登录 编辑:程序博客网 时间:2024/06/06 08:49

将游戏烧进机器里面以后很兴奋,昨天晚上把玩了一下,结果发现一个非常之令人不解的bug:

某些情况下,切割生成的形状掉落到静态物体上以后,就像被粘住了一样,不能在模拟运动

而且,这块形状在和其他形状发生碰撞的时候出现严重失真的情况(重叠了)


当第二块形状掉落下来的时候,没有发生碰撞:


接下来就蛋疼了,在网上找呀找,凡是跟box2d字样沾上边的,关键字里面带了中文的,基本是都是一些入门类的对box2d的介绍

根本就找不到我所对应问题的答案,没办法了,只有像全世界的开发者求助了

e文不过关,不知道怎样来描述这个问题才算合适,粘住到底该用什么呢?adhere,cling to,stick?

一个一个来是吧,果不其然,当我google到 “box2d stick”的时候找到一个有用的连接:

http://www.box2d.org/forum/viewtopic.php?f=3&t=5882

标题是:

Dynamic Bodies stick to platform that is moving away

最最让人振奋的是,这个疑难杂症是由大神 Erin Catto 亲自来回答的,看来能解决这个问题的可能性就比较大了~
按照帖子上面的第一个方法做了以后,发现并没有得到如愿的效果,bug依然很得意
不过不要紧,还有第二个方法:按Erin的说法是,同步box2d为最新的svn版本
google的svn不知道怎么去用,有待探索~
cocos2d里面自带的box2d版本应该是2。1。2的,在box2d的google下载地址看了下,box2d2.1.2是流传最广的一个版本
光下载量就达到了惊人的6w多!!
但是box2d 2。1。2在 2010年4月份的时候就发布了,而查看帖子的日期,可以发现:
提问者是在2010。9。13号提出的问题,Erin在9。15号和9。19号回复了两次
第一次给出了一些建议,第二次让提问的人同步box2d库
这么说来的话,肯定是box2d本身还存在着一些问题,因此作者Erin在发现问题以后进行了修改并提交到了SVN
于是乎,老版本的2。1。2里面的这个bug依然存在着!!!

所以,接下来就好办了,将box2d由2。1。2升级为2。2。0即可!
话说怎么来升级了,凡事总有第一次,经历过了第二次就轻车熟路了
我先在项目浏览试图中将 cocos2d Sources文件夹下的 Box2d 文件夹给删除掉,连带磁盘上的文件一起删除!
(当然,这个是要有备份的,不然弄不成就完了)
然后将2。2。0目录下的box2d文件夹复制到项目文件夹的  libs 文件夹中
右键项目浏览视图中的 cocos2d Sources 文件夹,选择“add files to ***”,将复制到libs目录中的Box2d文件夹添加到项目中
这里有要注意的地方(添加方法正确的话项目浏览视图中的Box2d文件夹是黄色的,不正确的话则是蓝色的):
(黄色的文件夹代表项目所购建的虚拟的文件夹,主要是为了方便管理源文件;蓝色的文件夹表示磁盘系统中实际的目录组成结构)
添加诸如Box2D类库这样的物件时,应该采用如下的选项
(因为已经将Box2D类库源文件复制到项目中的libs文件夹中了,所以不勾选copy items.
如果是拖拽到项目中的话,还是得勾选上copy items的,但是那样有个问题:
Box2D类库文件夹只能被拖到项目根目录下,不能像从前一样是被放在libs文件夹中的.)


基本上就这样了,不过之后我再次编译项目的时候,又发现了新的问题
之前没有正确将Box2d类库源文件置入项目的时候报出的错误是 找不到 Box2d.h文件
现在却是变成找不到 b2DebugDraw 了
翻查了一下,发现在 box2d2.2.0中,b2DebugDraw 已经进化成 b2Draw 了,难怪会找不到 b2DebugDraw 这个类名~
还有一个问题就是:GLES-Render中的 DrawTransform也出现了问题,详见如下的帖子:
http://www.box2d.org/forum/viewtopic.php?f=18&t=7567
标题是:

Problems with existing project and Box2D 2.2.0

大意就是b2Transform结构体也被做了修改,
2。1。2中的b2Transform已经和 2。2。0中的b2Transform大不相同了

最后的最后,发现了一个相当蛋疼的问题,我自己用到的b2FixtureProxy Erin竟然也在新版本中添加了
这个结构体,无比的纠结啊,那么多东西我自己还要在项目中找出来做修改
哎,下次不用b2前缀自定义类型了,虽是巧合,但是一想到又要浪费我时间,就忍不住眉头紧皱~

原创粉丝点击