切割Box2D对象之三:切割自定义的sprite

转载自:http://bbs.9ria.com/thread-87206-1-1.html

在本系列教程的第二部分,我们展示了如何切割一个Box2D对象。但是这些例子只是在Box2D的debug draw环境下实现,所以整个过程并不能在实际的例子应用除非在你发布游戏的时候仍然使用debug draw图形。那么我们如何才能切割自定义的sprite,这样你才可以完成最后一步。在切割debug draw多边形时你可以看到碎片会产生随即颜色并下落。这些碎片是sprite实时生成的。下面让我们看看源代码看看跟前一步比发生了什么改变。

第12行debris这个Sprite是实时产生碎片的容器。
第21-22行先把debris添加到显示列表中,然后添加canvas。canvas中包含切割光线,这样切割光线就会一直在debris上面。现在我们已经有了debris容器,让我们修改createSlice方法在debris中添加一些子对象。
第197行创建一个自定义的sprite作为切割体,并把它赋值给body的userData属性
第198行在debris这个sprite中添加这个sprite
第199-200行随即设置线和颜色的填充。
第203-207行在此刻我们添加for循环扫描所有的顶点。目的是画多边形,我们移动画笔从第一个顶点到第二个然后一直画下去。
第209-210行当我们连接最后一个顶点时。从最后一个顶点到第一个顶点形成闭合的矩形。然后调用endFill方法结束绘画。通过这种方式我们就产生了以(0,0)为起点开始的多边形。它们将不能在移动了。现在让多边形根据它们所代表部分移动和旋转。为了这样我们需要修改updateWorld方法。
第102-108行这是一段比较好的代码实例来自Box2D的hello world例子。让我们同步Box2D和flash显示对象。现在我们知道如何绘制和移动自定义sprite。一旦对象产生了碎片我们需要把这个对象移出。第162-164行来做这个工作。
现在任务已经完成了。在下一步我们将要看到如何在这些sprite加上不同的材质。

你可能感兴趣的:(Sprite)