Nape柔体贴图教程1
贴图对于2D物理游戏来说是必不可少的,实现起来其实也不难,我在贴图教程里曾经讲过,但是对用刚体模拟的柔体贴图,就没那么简单了,今天我们来研究一下柔体贴图。
相信你对柔体模拟应该已经不陌生了,我在下面的系列教程中循序渐进的讲解了柔体的实现过程,如果你掌握的不是很扎实,转进去温习一下!
柔体贴图之所以比较难事因为它的形状不是固定的,因此我们要实时的根据这个形状来更新贴图,前面我们费尽九牛二虎之力实现了柔体,结果是搬起石头砸了自己的脚…开玩笑啦,下面是拉登大叔实现的效果。
[swfobject]1080[/swfobject]
上面的贴图是基于柔体教程2模拟实现的,方法很简单,循环遍历外围的每个刚体,并获取它的坐标,然后用lineTo把这些点连接起来,最后在beginFill方法中设置要填充的颜色,OK,收工!
贴图部分代码如下:
private function initGraphic() : void { softBodyGraphic = new Sprite(); addChild(softBodyGraphic); ladeng6666 = Bitmap(new LADENG()).bitmapData; } private function drawGraphic() : void { softBodyGraphic.graphics.clear(); softBodyGraphic.graphics.beginFill(0x0000cc); //softBodyGraphic.graphics.beginBitmapFill(ladeng6666); for(var i:int=0; i<bodyList.length; i++){ var b:Body = bodyList.at(i); if(i==0){ softBodyGraphic.graphics.moveTo(b.position.x-centerBody.position.x, b.position.y-centerBody.position.y); }else{ softBodyGraphic.graphics.lineTo(b.position.x-centerBody.position.x, b.position.y-centerBody.position.y); } } }
首先在initGraphic()函数中,我创建了一个softBodyGraphic对象作为柔体的贴图。并在loop函数中根据柔体的坐标实时更新贴图的位置。ladeng6666是我创建一个BitmapData对象,稍后用来实现位图贴图。
在drawGraphic()函数中,通过遍历外围的刚体的位置,以及基本的lineTo和moveTo方法,动态绘制柔体的贴图。
不是吧?就这么结束了?这个贴图教程未免有些滥竽充数了吧?
当然,你可以把beginFill改为beginBitmapFill,用位图填充,同时将上面代码中注释部分取消注释,实现位图贴图,效果是这样的。
[swfobject]1081[/swfobject]
呃…似乎不太对劲,位图没有随着柔体发生形变,别急,今天先到这里,下一节,我们将传授你真正的葵花宝典,先去洗洗,准备自宫…
联系作者
拉登给力,圆我心愿,哈哈