基于图像创建多边形Nape刚体
提到基于图像创建多边形,你可能会想到PhysicsEditor,不过今天我们要实现的是,用MarchingSquares在运行时,基于图像创建多边形刚体。
上一节,我已经讲过了MatchingSquares创建多边形刚体的用法,不熟悉的同学,请点击这里自行查看。今天的教程,原理和上一节是一样的,不同的是iso函数里的算法。好了,我们还是先看看效果吧!
在下面的示例中,双击舞台弹出浏览对话框,旋转一个png文件,我之所以类型限制为png,是因为png支持透明背景,可以实现不规则边界。选择好之后,会自动在左上角添加该图像,同时生成相同形状的多边形刚体。
[swfobject]1061[/swfobject]
代码部分很简单,如下:
public function iso(x:Number,y:Number):Number{ var isOK:Number; if(graphic.bitmapData.getPixel32(x, y)>0){ isOK = -1; }else{ isOK = 1; } return isOK; }
graphic保存了我们旋转的图像引用,通过它的BitmapData属性的getPixel32方法,或者(x,y)坐标处的像素,如果该像素值大于0,即飞透明像素,则表示isOK为-1,否则为1。然后返回即可。
好了,本节内容讲完了,就这么简单,点击下载源文件
联系作者
我很不理解
http://napephys.com/samples.html#swf-BodyFromGraphic
在这里看这个demo nape的速度很快
可是一模一样的我下了他as3 的源代码去试,速度却连demo里面的一半都不到,。。。。
难道demo全部是永haxe编译的?haxe的效率高过as3? 拉登大哥,同问的我发了邮件。。。
刚刚在苹果上安装了haxe 并且编译hx 运行了一下 果然很快。。。。。难道说 官方的例子很快。。。。就因为是hx语言的。。。。?