精通Cocos2d-x游戏开发(进阶卷)
上QQ阅读APP看书,第一时间看更新

10.5 Box2d的相关工具

Box2d的编辑器不少,但功能大多比较简单,主要有PhysicsEditor、BoxCAD、Physics Body Editor、Vertex Helper等。编辑器主要可以用于编辑物理形状,这样就不需要在代码中使用大量的坐标编码来描述形状给Box2d,而是由编辑器来描述形状,我们只需要调用简单的接口,就可以把复杂的物理形状创建出来,大大减少了代码中的硬编码,同时也有利于后期物理形状的调整。

10.5.1 PhysicsEditor介绍

PhysicsEditor与TexturePacker是同一个公司开发的,支持Windows和Mac,可以用来简单地编辑一些形状,然后导出Plist,其工具界面如图10-4所示,官方提供了一个简单的解析类供用户使用,虽然是收费软件,但仍可以免费使用,只不过有两个限制,即导出的Plist不能超过10个shape;每次导出要等5秒才能导出。这个工具用来编辑物体的物理形状,还是很不错的。在导出的时候,需要在导出界面的右上角选择导出格式,注意选择Box2D generic Plist选项导出。

图10-4 PhysicsEditor编辑器

使用PhysicsEditor进行编辑,一般的步骤如下。

(1)先把要编辑的物理对象的图片添加到PhysicsEditor中,如图10-5所示。

图10-5 添加图片

(2)为物理形状起一个名字,在所有的物理形状中,这个名字必须是唯一的,如图10-6所示。

图10-6 为形状起名字

(3)单击上方的形状按钮,添加形状到物理对象中,可以选择圆形、三角形、描点,然后调整添加的形状,最右边的两个按钮是对当前选择的图形进行镜像翻转,方便编辑一些对称形状,如图10-7所示。

图10-7 工具栏

(4)选择抠图工具可以快速地勾勒出复杂的形状,其选项中,Tolerance(容差)值越高,顶点就越少,Alpha threshold(透明极限)值越高,抠图的区域(红色区域)就越精细。Trace mode(追踪模式)有Straight(直线模式)和Natural(自然模式)两个选项可以选择,直线模式的顶点会更少一些,自然模式会更精细一些。Frame mode(帧模式)适用于需要描述多个物理形状之间的相交或者集合,如图10-8所示。

图10-8 抠图工具

(5)选择导出模式为Box2D generic (PLIST)尤为重要,因为这是要为Cocos2d-x、Box2d导出的形状文件,选择不同的导出模式会有不同的附加选项可供选择,如图10-9所示。

图10-9 导出格式

(6)还需要填写锚点的值,一般都是将锚点设置为0.5,0.5,所以这里将Relative选项的值都填为0.5,0.5,然后为密度、弹性和摩擦力选项赋值,弹性和摩擦力的取值范围是0~1,而密度的单位应该是kg/m3,如图10-10所示。

图10-10 属性设置

(7)在属性面板的最下方还有一个多选菜单,左边的Cat.表示你自己的碰撞属性,右边的Mask表示你能与哪些物体碰撞,例如,这里你的碰撞属性是bit_0,则可以与所有对象碰撞,假设Mask的bit_0没有选中,那么这个物理对象不会和另外一个相同类型的物理对象发生碰撞,但可以和其他的物理对象发生碰撞。选中Cat.表示这个物理对象是什么,而选中Mask表示你能和什么物理对象发生碰撞(所有默认的物理对象的Cat.都是bit_0),如图10-11所示。

图10-11 碰撞掩码设置

(8)最后,单击上方的Publish或Publish As按钮,就可以导出Plist文件了,Plist文件可以直接在Cocos2d-x中使用。在PhysicsEditor的安装目录下,Documentation目录中有如何使用PhysicsEditor的相关文档,Examples目录下有多种引擎使用PhysicsEditor的示例,Loaders目录下有多种引擎加载PhysicsEditor导出的Plist文件的加载器,Cocos2d-x只需要包含GB2ShapeCache-x.h和GB2ShapeCache-x.cpp文件即可。

10.5.2 BoxCAD介绍

BoxCAD是一个在线编辑Box2d的网站,可以编辑各种形状和关节,然后播放演示,Dump Code按钮可以自动生成所编辑内容的AS代码,并下载下来,Box2d使用的各种语言代码都是比较相似的,可以简单修改一下,放到Cocos2d-x中(TestBed框架),如图10-12所示。

图10-12 BoxCAD界面

10.5.3 Physics Body Editor介绍

Physics Body Editor与PhysicsEditor相似,都是用Java实现的一个开源的编辑器,Java的东西都是跨平台的,但其只能导出JSON格式,虽然其界面看上去还不错,但目前还没有找到Cocos2d-x调用它的代码,如图10-13所示。

图10-13 Physics Body Editor界面

10.5.4 Vertex Helper介绍

Vertex Helper也是一个编辑形状的工具,但该工具是编辑完形状直接生成代码,生成的代码可以直接放到2dx代码中(BoxCAD是需要修改一下的),相对于BoxCAD, Vertex Helper并不支持编辑关节,也不支持物理模拟,并且只能在Mac下运行。

使用的时候需要先将参考图片拖进工具中,然后选择编辑模式,旋转Type和Style选项,接下来在图片上挨个单击,右下角的文本框中就会自动生成相对应的初始化代码了,如图10-14所示。

图10-14 Vertex Helper界面

除此之外还有Mekanimo、PhysicsBench等工具,这里就不一一介绍了。