Nape柔体贴图教程1

贴图对于2D物理游戏来说是必不可少的,实现起来其实也不难,我在贴图教程里曾经讲过,但是对用刚体模拟的柔体贴图,就没那么简单了,今天我们来研究一下柔体贴图。
相信你对柔体模拟应该已经不陌生了,我在下面的系列教程中循序渐进的讲解了柔体的实现过程,如果你掌握的不是很扎实,转进去温习一下!

  1. Nape柔体教程(1)
  2. Nape柔体教程(2)
  3. Nape柔体教程(3)
  4. Nape柔体教程(4)
  5. Nape柔体教程(5)

柔体贴图之所以比较难事因为它的形状不是固定的,因此我们要实时的根据这个形状来更新贴图,前面我们费尽九牛二虎之力实现了柔体,结果是搬起石头砸了自己的脚…开玩笑啦,下面是拉登大叔实现的效果。

[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]

呃…似乎不太对劲,位图没有随着柔体发生形变,别急,今天先到这里,下一节,我们将传授你真正的葵花宝典,先去洗洗,准备自宫…

点击下载源文件

联系作者

公众号:拉小登 | 微博:拉登Dony | B站:拉小登Excel

2 Replies to “Nape柔体贴图教程1”

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注