为尊重作者的劳动成果,请认真阅读作者声明,切勿将资源私自修改并发布公开

Air文件格式详细说明

====================================================================

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%的背景上


你,确定要这么做吗?
正在处理中...