====================================================================
I. 导言
====================================================================
AIR 描述一套画片(animations)的格式,可以看到AIR格式是用于人物、背景、气血条等等的动画。
关键词:
1)Sprite:
直译为精灵。涉及过图形方面编程的朋友应该知道这也是一个专业术语,指在屏幕上可以活动变化的一个物体。在MUGEN里人物的每一张图片称为一个Sprite,存在于SFF文件中。并且每张Sprite有一个用于互相区别的编号如200,2。由两个数字以","分割。一般前一个用于分组。但是Sprite的组号和Anim的Action号以及CNS文件中的State号并非必须确定的对应关系,只是为了一目了然,常常是尽量对应的。
在Air文件中用Sprite号来调用Sprite。
2)Animation:
Animated cartoon在英文里就是动画片。因此Animation在这里可以理解为一段动画。
Animation(在MUGEN里动画动作(animation action)的特称),描述了要显示的一串sprites顺序。人物的animation文件(.air)只要需要可以包括尽可能多的animation actions。
3)Element:
既然Animation是一段由几张Sprite串起来的,那其中的Sprite就自然形成了一个顺序。这样我们要表述其中第n张图片时就称之为Element n,由1开始计数。如Animation由200,0、200,1、200,2、200,0构成,则第一个200,0就是Elem 1,200,1就是Elem 2,第二个出现的200,0虽然和第一个200,0是同一个sprite但却是Elem 4。
例子:
[Begin Action 200]--|
200,0,0,0,1 |
200,1,0,0,4 }这是一整个animation action。
200,2,0,0,2---------|------------------------->这一行就是一个Element。
200,0,0,0,1 --|
|___|
这一部分就是Sprite号
以下的表述力求一致,但是还是请大家明白这几个表述是同一个意思。
Spr / Sprite / 图片
Anim / Animation / Animation Action / Action / 动画
Elem / Element / 图元 / 图片号
====================================================================
II. 格式
====================================================================
这里是典型的一个.air文件的条目。我们接下来说明它的格式。
; Standing Animation
[Begin Action 000]
Clsn2Default: 2
Clsn2[0] = -10, 0, 10,-79
Clsn2[1] = -4,-92, 6,-79
0,1, 0,0, 7
0,2, 0,0, 7
0,3, 0,0, 7
0,4, 0,0, 50
0,5, 0,0, 7
0,6, 0,0, 7
0,7, 0,0, 7
0,8, 0,0, 60
分号(;)用于注释。可以用在任何地方,分号后的行内容将被忽略。
[Begin Action n]
这行定义一个action。编号n称为动作号(action number)。每个action必须有一个唯一的action number以用来和其他action相区别。你可以建立很多action,但是注意保留的actions number。这些号和其作用请看后面的文章。
Clsn2Default: 2
这行说明定义有两个撞击块(collision box)作为存在判定(被攻击判定)。并且以下的Element都使用这个Clsn设置,在本例中就是此Action里的所有sprite。如果用:Clsn2: 2。就是说这句Clsn设置仅对下一行的Element有效。现在Mugen里只有两个Clsn(collision的简称)。除了Clsn2,还有作为攻击判定的Clsn1。相信熟悉格斗游戏的都能理解。用Mugen开发工具:AirView/AirEdit可以得到更直观的理解。
0,3, 0,0, 7
这个样子样的一整句称为一个"animation element",简称"element"。
第一个数字是sprite的组号。
第二个数字是sprite的组内图片号。
sprite号在.sff文件中指派。
用sprmaker来制作SFF文件,组号0图片号3的这样输入:
work/mypic.pcx
0 (组号)
3 (图片号)
40 (X轴线)
40 (Y轴线)
第三、四个数字分别是该element使用sprite的相对轴线X及Y偏移量。如果想让sprite显示向前5个象素,把第三项设为"5"。如果想让sprite显示向上15个象素。,把第四项设为"-15"。以此类推。大部分情况下最好保持0,0。因为一般都在Sff里以轴线设定好了。(见上段的最后两行)第五个数字是在显示这个element的时间。单位是game-tick。在游戏速度正常时60 game-tick为一秒。第五个数字可以设定为"-1",作用是该element无限时显示。一般用于显示时间不确定(自然有其他因素来转换action)。要取该值时,只能用于action的最后一个element。
一个action的循环时间("looptime"),是各个element的时间之和。基本上,是game-tick的总长度。如果最后的element的时间是"-1",looptime就是无限的。也就是不循环。有限循环时间的action在播完最后一个element后会回到第一个element,重新循环播放直至转到另一个action。
上例中的action,looptime是:
7 + 7 + 7 + 50 + 7 + 7 + 7 + 60 = 152 ticks
; Standing Animation
[Begin Action 000]
Clsn2Default: 2
Clsn2[0] = -10, 0, 10,-79
Clsn2[1] = -4,-92, 6,-79
0,1, 0,0, 7
0,2, 0,0, 7
Loopstart
0,3, 0,0, 7
0,4, 0,0, 50
0,5, 0,0, 7
0,6, 0,0, 7
0,7, 0,0, 7
0,8, 0,0, 60
加入一行"Loopstart"会使以下的Element作为一个循环。在上例中,在播完最后一个element(sprite 0,8)后不是回到第一个element,而是回到LoopStart后的element(sprite 0,3)开始循环。
要测试你的animations,可以在游戏中按"Pause"键暂停。然后按"Scroll Lock"键每按一次放一个game-tick。称为Frame-advance功能,只能在暂停中使用。
可选参数:
------------------
这里是一条Element:
15,1, 0,0, 5
如果想让该sprite水平和/或垂直翻转,就得用"flip"参数:V是垂直翻转,H是水平翻转。该参数写在一行的第六项。
例如:
15,1, 0,0, 5, H ;<-- 水平翻转
15,2, 0,0, 5, V ;<-- 垂直翻转
15,3, 0,0, 5, VH ;<-- 水平和垂直翻转,也就是旋转180度。
某些东西像攻击火花,要使用色彩叠加来画这个sprite,使看起来是"透明的"。
因为人物不必用,所以不必担心不写这一项。
大家已经看到“大蛇”了吧,就是完全用透明的人物。
参数有:
"A",颜色叠加,变光亮的透明效果。
"S",颜色对减,变阴影的透明效果。
这是一行的第七项,注意不要写在翻转参数的位置上。
例如:
15,4, 0,0, 5, ,A ;<-- 颜色叠加 (翻转参数处省略)
15,4, 0,0, 5, H, S ;<-- 水平翻转、颜色对减
15,4, 0,0, 5, ,A1 ;<-- 颜色叠加到颜色变深50%的背景上