12.2 Spine结构
学习如何在程序中使用Spine之前,先来了解一下Spine的结构,Spine骨骼动画的结构与一般的骨骼动画有些不同,如果不了解其结构,那么在使用Spine时将会碰到很多障碍。
Spine骨骼动画对象由Bone骨骼、Slot插槽、Attachment附件、Skin皮肤以及Animation动画等部分组成,如图12-2所示为Spine骨骼动画中各个部分的关系。
图12-2 Spine骨骼动画结构图
❑ Bone骨骼:骨骼是Spine骨骼动画的基本组成元素,每块骨骼都有它的名字和长度,可以用于移动、旋转和缩放。骨骼之间存在父子关系,父骨骼的运动会带动其子骨骼。
❑ Slot插槽:插槽主要用于关联附件,骨骼本身并没有实现显示功能,每块骨骼可以关联多个插槽,通过插槽所关联的附件来显示,而每个插槽可以关联多个附件,但同一时间只能激活一个附件,只有被激活的附件才会显示出来。
❑ Attachment附件:附件主要用于显示,Spine支持的附件类型有Region附件(图片)、Mesh附件(网格)、BoundingBox附件(边界框)、SkinnedMesh附件(蒙皮网格)。
❑ Skin皮肤:皮肤的作用是重用骨骼和动画,通过一套新的附件,来切换骨骼动画的表现。例如官方例子中的哥布林(游戏中的一种怪物),哥布林包含了两个皮肤,男性哥布林和女性哥布林(如图12-3所示),使用同一套骨骼框架和动画,通过切换皮肤可以切换不同的哥布林形象。每个皮肤会对应一系列插槽以及插槽中相对的附件,当应用一个皮肤时,在骨骼动画对象中,该皮肤对应的所有插槽以及插槽中相对的附件都会被替换为当前皮肤所对应的附件,默认情况下是没有皮肤的。
图12-3 切换骨骼皮肤
❑ Animation动画:播放动画可以让骨骼动画对象运动起来,动画包含了一系列的时间轴,即骨骼时间轴(描述骨骼如何运动)、插槽时间轴(描述了颜色以及附件的变化,可实现帧动画)、事件时间轴(记录了动画中触发的事件,以及事件携带的参数)、渲染顺序时间轴(描述了插槽渲染顺序的变化)。一个骨骼动画对象可以拥有多个动画,并且也可以同时播放多个动画,通过动画混合技术,例如一个角色拥有移动和射击两个动画,这两个动画可以被同时播放。