Nape2.0.3刚体贴图教程

我在用Body.graphic属性实现Nape刚体贴图向大家介绍了Nape贴图的方法,不过教程中用的Nape是2.0版的,作者在2012-12-13的时候2.0.3版,因为执行效率问题,删除了Body.graphic属性,很多网友也提出了这个问题,今天我们就来学习一下Nape 2.0.3版的贴图方法。

在上一篇教程中我说过Box2D的更新贴图的方法,Nape 2.0.3中也借鉴了Box2D里的方法:遍历所有的刚体,在ENTER_FRAME事件处理函数中,根据刚体的坐标和角度实时更新贴图的属性。具体的步骤如下:

创建刚体时添加贴图:

  1. Nape 2.0.3的Body对象多了一个userData属性,它是一个Object对象,在创建刚体时,添加userData的动态属性graphic,并用贴图对象赋值。
		box.userData.graphic=userData;

在ENTER_FRAME事件处理函数中更新贴图:

  1. 通过Nape世界的space.liveBodies获取存储所有的活动刚体一个BodyList对象。
  2. 遍历这个BodyList对象,并通过BodyList.at(index)方法获取每个刚体的引用,同时获取贴图对象引用
  3. 用刚体的坐标和角度更新贴图的属性,实时更新贴图
		protected function loop(event:Event):void
		{
			napeWorld.step(1/60);
			debug.clear();
			debug.draw(napeWorld);
			debug.flush();

			//实时更新贴图
			//1.通过Nape世界的space.liveBodies获取存储所有的活动刚体一个BodyList对象。
			for (var i:int = 0; i < napeWorld.liveBodies.length; i++) {
				//2.遍历这个BodyList对象,并通过BodyList.at(index)方法获取每个刚体的引用,同时获取贴图对象引用
				var body:Body = napeWorld.liveBodies.at(i);
				var graphic:Sprite = body.userData.graphic;
				//3.用刚体的坐标和角度更新贴图的属性,实时更新贴图
				graphic.x = body.position.x;
				graphic.y = body.position.y;
				graphic.rotation = (body.rotation * 180 / Math.PI) % 360;
			}
		}

完成上面的两个步骤,就可以实现Nape 2.0.3刚体贴图了。允许的效果与上一篇教程是一样的。点击舞台并拖动鼠标绘制矩形,同时按下shift绘制5边形,同时按下ctrl绘制圆形。

[swfobject]760[/swfobject]

源代码部分只是更新了AbstractNapeTest中创建刚体,和loop函数中更新贴图的部分,基本上和上面的两个步骤是一样的,我就不贴出来了,大家下载源代码来看吧。

联系作者

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

9 Replies to “Nape2.0.3刚体贴图教程”

  1. 拉登大叔, 刚体与刚体之间不碰撞,刚体只能与墙壁碰撞,这个是什么属性啊?

发表回复

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