【Box2D】物理引擎入门002

物理编辑器篇(PhysicsEditor)

在Box2D中,除了可以使用内置的几种基本形状之外,它还支持从外部文件中进行材质(b2Fixture)的创建。在创建一些复杂的刚体形状时,单纯的使用多边形描点是一个比较费劲的工作,这时候借助PhysicsEditor这款出色的物理材质编辑器来进行可视化编辑会大大提高效率。

一、形状编辑

PhysicsEditor主界面

如上图所示,PhysicsEditor的主界面大致分为四个区域(工具栏、形状列表、形状编辑面板和参数编辑面板)

1、工具栏(ToolsBar)

工具栏位于界面的顶部(如果Windows版本的话,在工具栏上方还有有一行菜单栏),工具栏从左往右依次包含以下6个工具项。

  • New:新建文件。
  • Open:打开一个已有的物理材质编辑文件。
  • Save:保存当前的编辑文件。
  • Publish:导出配置文件。
  • Publish As:导出所有。
  • Add Sprites:添加精灵。

2、形状列表(Shapes)

形状列表的面板默认在主界面的左边位置,该面板显示的是文件编辑的形状。为了方便编辑形状,开发者可以直接将要编辑的形状对应的图片拖进该面板松开。

形状列表面板

如果要删除某个形状,只需要在Shapes面板上面选中要删除的形状,然后点击面板右下角的删除按钮即可。(图片的名字会默认为形状的名称,以便导出到文件最后在代码里面使用,所以一般使用合法标识符对图片命名。)

删除按钮

3、形状编辑面板(Editor)

主界面中央是用于编辑形状的面板,选中Shapes面板上面的形状后,该面板会显示对应的图片,开发者可以根据图片的轮廓进行描点,编辑出想要的形状。

形状编辑面板

形状编辑面板的顶部是一组形状编辑工具,从左往右依次是:圆形、多边形、魔术棒、左右对称、上下对称、顶点的x坐标值、顶点的y坐标值和一个删除按钮

3.1、魔术棒
魔术棒顶点信息

在形状列表里面选择一个形状(我这里的carBody_1),这样便可以编辑carBody_1的形状了。先从魔术棒开始吧,点击魔术棒之后,编辑器会弹窗(如上图)显示自动描绘的形状顶点,直接点击右下角的“OK”按钮。物理编辑器根据图片的像素点自动生成了一个多边形(如下图)。

魔术棒生成的形状
3.2、多边形

虽然编辑器可以使用魔术棒自动生成多边形,但是这样形成的多边形顶点个数太多,会影响物理模拟的性能(计算量增加了),所以对于多边形,通常建议开发者使用多边形手动编辑(不用太过精确)。

点击多边形按钮,我们可以看到多生成了一个三角形(多边形默认为三角形),如下图:

多边形

新建形状后,原本使用魔术棒生成的形状会变灰掉,开发者可以点击灰掉的形状(形状变成红色选中状态),然后点击编辑面板右上角的删除按钮(y值右边的那个按钮)去除不要的形状。

生成的多边形默认在图片的左下角位置,开发者可以手动将其拖拽到合适的位置。然后,可以在形状相应的边线附近双击添加一个顶点(也可以右键创建一个顶点)。

编辑好的多边形

编辑好形状之后,可以选中一个顶点,然后顶部的x和y后面的文本框就会现实该顶点的坐标值,开发者可以手动输入进行微调(如上图)。

3.3、圆形

在形状列表选择wheel_1,然后点击形状编辑面板顶部的圆形按钮,这样就可以创建一个圆的形状。圆形在形状右边(3点钟位置)有一个顶点,拖拽它便可以调整圆形的大小。

3.4、形状镜像显示

如果要把编辑好的形状变成它的左右翻转镜像或者上下翻转的镜像,只需要点击一下左右对称或者上下对称按钮,这里就不再赘述(自己玩去,点个按钮反正很简单,不想写,任性--!)。

3.5、缩放编辑面板

由于编辑面板的大小受限,很多时候如果要编辑的图片比较大,或者想要描点更加精确,开发者可以使用形状编辑面板底部的缩放功能,默认是原图大小。

4、参数面板(Parameters)

参数面板分为:Exporter(导出)、Image parameters(图片参数)、Body parameters(刚体参数)和Fixture parameters(材质/夹具参数)四个部分。

在没有创建形状的时候,参数面板上面的部分参数是无法进行编辑的。

4.1、Exporter

Exporter用于设置导出的文件格式,默认为“AndEngine Exporter(XML)”,该选项是一个下拉选择列表,开发者可以根据使用情景选择合适的导出格式。这里我选择“Box2D generic(PLIST)”。

4.2、Gloabl parameters(全局参数)

当Exporter设置为Box2D generic(PLIST)选项后,原本的Body parameters便没有了,反而多出了一个Gloabl parameters(全局参数),全局参数里面可以设置“PTM-Ratio”(Cocos2D与Box2D的度量单位的一个缩放系数)。

PTM-Ratio默认值是32,通常在Cocos2D中也是使用32,但是这边需要将其设置为64,否则在创建的时候会发现刚体过大具体原因我也没有去深究)。

4.3、Image parameters

在Image parameters中,我们通常也只需要关注“Relative”这一项,其它的都可以不用管(看看就知道其它参数是什么意思)。

当Exporter设置为Box2D generic(PLIST)选项后,在形状编辑面板的左下角便会多出一个小圆圈(如下图)。

质心

这个圆圈表示的是刚体的质心(搓一点的人就把它当成中心点吧)。我们可以手动拖动这个小圆圈到想要设置的位置,通常是图片的中间,因为Cocos2D的精灵(Sprite)默认的锚点在中心点,这样设置方便进行物理世界和渲染世界的效果同步。

在拖动小圆圈的时候就会发现,Relative参数的对应的在变化,开发者可以直接在Relative后面的两个输入框里面把值改成0.5,这样就肯定居中了。

4.4、Fixture parameters

在材质参数这边一共有7个个参数要设置。

  • Density:密度,用于设置形状的密度,间接的影响刚体的质量。
  • Restitution:恢复系数,控制刚体发生碰撞时,能量的损失。0表示完全非弹性碰撞,1表示完全弹性碰撞。
  • Friction:摩擦系数,用于模拟形状的摩擦效果。
  • Is Sensor:是否为传感器类型,勾选时表示该形状发生碰撞时可以接收到碰撞信息,触发碰撞回调,但是没有碰撞的效果。
  • Id:刚体的id。
  • Group:碰撞组,用于碰撞检测,默认为0。

除了上述6个参数之外,在Group下面还有16个碰撞种群的设置,用于进行碰撞筛选:

  • Bit's name:种群名称。
  • Cat:刚体所在的种群(可以多选),默认选择第一个。
  • Mask:与该形状发生碰撞的种群(可以多选),勾选后即表示当前形状可以与对应的种群的刚体发生碰撞。
参数设置

二、文件导出和保存

编辑结束后点击顶部工具栏的“Publish”按钮,进行导出,Publish导出的是plist格式,可以在Cocos2D中进行解析(关于如何使用该文件将在下一篇关于关节的篇幅中介绍)。

除此之外,我们还需要“CTRL + S”或者点击工具栏的“Save”按钮将文件保存成pes格式的文件,pes格式的文件可以使用PhysicsEditor直接打开,方便后续开发中进行修改。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 193,812评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,626评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,144评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,052评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,925评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,035评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,461评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,150评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,413评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,501评论 2 307
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,277评论 1 325
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,159评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,528评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,868评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,143评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,407评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,615评论 2 335

推荐阅读更多精彩内容