作者:cls分享站
目前已有教程:
-
CitrusEngine系列教程一:认识CitrusEngine
-
CitrusEngine系列教程二:结合starling和Box2D开发游戏
-
CitrusEngine系列教程三:使用flash cs 设计关卡
-
CitrusEngine系列教程四:Citrus的2D动画和摄像头
-
CitrusEngine系列教程五:使用PhysicsEditor创建box2d刚体
-
CitrusEngine系列教程六:使用Tiled Map Editor创建地图
............................................................................
之前教程中,创建游戏元素的时候,我们发现默认情况下box2d的刚体都是一个矩形,但很多时候我们需要不规则的刚体。如一棵树,崎岖的路面等。这时候我们需要自定义刚体的形状,但自己写代码似乎又有点麻烦,于是PhysicsEditor我们可以帮我很好的偷懒一番。
PhysicsEditor是个很棒的工具,通过它的可视化编辑界面,点一点,拉一拉就可以轻松创建任意的多边形刚体模型,并将这个模型数据导出成我们所需的格式,例如AS3类。PhysicsEditor支持Box2D、Cocos2d、Nape等多种2D物理引擎。
只不过它也是个收费软件,不过也有提供免费试用,试用的话对多边形的数量有限制(10个),不过据说有技术博客开发者可以申请免费许可(http://www.codeandweb.com/request-free-license),不知有没有申请成功的同志?或许我该去碰碰运气呐,哈~
好了,进入正题,大家可以在这里下载试用版,以下是软件的界面:
大家注意到我在一些地方标记了数字,是为了便于接下来的用法讲解。这一招其实是学拉登大叔的“用PhysicsEditor快速创建自定义Box2D刚体(二)”,其实操作差不多,而且相比之下他的讲解会比我详细多,大家可以好好参考参考。而我的重点是想讲解一下如何修改PhysicsEditor的CitrusEngine模板文件。
之所以要修改模板文件是因为现在的PhysicsEditor还是按旧版本的CitrusEngine发布最后生成的文件,所以我们需要对模板文件进行一些修改。操作如下
大家找到PhysicsEditor的安装路径,进入其bin\exporters\citrus-engine目录下,打开citrusengine.as文件,
将Box2DAS.Collision.Shapes.b2PolygonShape替换成Box2D.Collision.Shapes.b2PolygonShape,将Box2DAS.Common.V2替换成Box2D.Common.Math.b2Vec2,将com.citrusengine.objects.PhysicsObject替换成citrus.objects.platformer.box2d.Crate,
再将文件中所有用到V2这个类的地方全部替换成b2Vec2,将PhysicsObject换成Crate,还要将var vertices:Vector.<V2> = new Vector.<V2>()改成var vertices:Array =[];将vertices =new Vector.<V2>()改成vertices = []。
这样终于修改好了,是不是觉得挺折腾的~其实我自己也尝试了好久才指导是这么改的==
不过如果你们懒得改的话,可以直接下载文末的项目源文件,我将修改好的文件也打包在里面了(bin文件夹),直接替换就得了。
那么准备工作结束,接下来研究一下如何用PhysicsEditor发布CitrusEngine的.as文件吧
首先,大家可以先点击1处添加图片,然后点击2处让PE自动帮忙捕获图片的边缘,自动生成多边形顶点信息。当然也可以自己动手点2处旁边的按钮,添加多边形或圆形组合成想要的效果。点击2处后会出现如下图所示的界面:
5处可以设置顶点之间的距离,这个值越小,顶点间距越小,多边形越接近图片的形状,同时消耗CPU也越多,所以不必过度要求多边形的精度,大体形状差不多就行。5处设置好后,PE会自动计算出顶点的个数,并显示在6处。
设置好之后点击ok回到主界面,接下来我们看3处,3处可以选择你要发布的平台文件。我们选择“CitrusEngine actionscript”,然后点击4处发布成一个.as文件。默认将其命名为CitrusPhysicsEditor,如果要用其他名字的话,发布之后要修改构造函数的名字,将其改成你命名的名字就行了那么这个.as在CitrusEngine中怎么使用呢?
其实跟我们添加其他游戏元素没差别:
- var pe:PhysicsEditorObjects = new PhysicsEditorObjects("Pe", {x:200, peObject:"muffin", view:"muffin.png", registration:"topLeft"});add(pe);
咱们可以预览一下效果图
=>原文及源码下载
来源:oschina
链接:https://my.oschina.net/u/1020146/blog/131129