前景

 前景・・・总之就是,人物图像之类的,在背景层和消息层中间显示的东西。KAG 的默认设定中,前景层有 3 层。 ( 自己设定的话,还可以有更多层 )。

 前景,为了显示出形状不规则的图像,必须使用遮罩或者透明色(colorkey)之类的方法。KAG 拥有使用遮罩和指定透明色两种画像显示方式。如果使用的是 PNG , ERI 或者 TLG5/TLG6 一类本身就带alpha channel的图片格式,那么将以图片自带的透明通道信息为准。

使用透明色方式的前景

 透明色就是,把想要透明的部分统一涂上某种颜色,只要涂上这种颜色的部分,将不被显示出来——这样的东西。
 当图片为全彩色(full color), 256 色或 16 色的情况,可能有少许的不同。

 全彩色的情况,也就是把「用不到」的颜色「透明色」( colorkey ) ,填充图片上想要透明的部分。一般来说,经常使用的透明色是纯紫色 (r,g,b)=(255,0,255) 或者纯绿色 (r,g,b)=(0,255,0) 。
 但是这么做的话,不想透明的部分需要用到纯紫色或者纯绿色怎么办呢?那样的话,就使用(r,g,b)=(254,0,255) 或者 (r,g,b)=(0,254,0) 这样的颜色吧, KAG 会把这当做不透明的颜色看待的(虽然人眼是分辨不出来)。

 256 色的图片,或者 16 色的图片,在调色盘里选择一种作为「透明色」。这个颜色填充的部分将被透明。


Note
 PNG 之类的图片格式,有些已经保存有透明色(colorkey)的信息了,带有半透明之类的柔化效果的 PNG 格式也是支持的。



../j/contents/ButtonGlyphImageList.png
透明色的范例

使用遮罩(mask)透明方式的前景

 KAG 中,可以使用和普通和前景图片不同,被叫做遮罩图片的东西,根据这种遮罩图片,可以把前景画像"剪"出一定的形状来。

 遮罩图片是和其对应的前景图片同样大小的, 256 阶灰度(gray scale)的图片、这张图片中,亮度的等级对应着「不透明度」。也就是说,亮度为 0 的部分是「全透明」,而亮度 255 的部分是「全不透明」。128 左右的亮度代表「半透明」这样。把前景图片上想要显示出来的部分,在遮罩图片的相应位置涂白,想要透明的部分涂黑。
 遮罩图片请务必存储成 256 阶灰度(gray scale) ( 256 色图片 ) 。如果存成 全彩色 或 16色 将无法正常显示。
 遮罩图片是记录不透明度信息的图片,和该遮罩图片对应的前景图片则记录着颜色信息。这种情况下,把前景图片称呼为主图片

Note
 PNG或者ERI、TLG5/TLG6 形式的图片,单张 PNG/ERI/TLG5 图片,已经包含了 alpha channel ( 也就是遮罩信息 ) 了。
 使用能够输出这类型图片的软件 ( PNG 或 GIMP 等 )的话,就不用特别制作遮罩图片了。此外,吉里吉里 SDK 内附有图片格式转换器,可以很轻松地进行这些图片格式之间的转换。


 遮罩图片的命名,请在对应主图片的文件名之后加入 _m 。例如主图片名叫 hogehoge.png ,对应的遮罩图片则应该起名为 hogehoge_m.png 。这种遮罩图片和主图片分离的方法,被称为「主/遮罩分离形式」。(拖鞋译注:引擎 Nscripter 使用的则是「主/遮罩合并形式」吧……XD)

 使用遮罩图片的好处在于,叠加前景的时候可以自由地指定任何一点的不透明度。处理恰当的遮罩图片和主图片将可以不留痕迹地融合进游戏画面中。

../j/contents/ayari.png../j/contents/ayari_m.png
遮罩范例 ( 左为主图片、右为遮罩图片 )

前景的显示

 で那么,就像这样,准备好适当的图片吧 ( 图片请自行准备... )。首先,是指定透明色的显示方法・・・。

[image storage="bg0" page=fore layer=base]
[wait time=200]
*start|スタート
[cm]
[image layer=0 page=fore storage="as" visible=true key=0xff00ff left=340 top=100]
你好。

 使用粗体的部分就是用于显示前景的指令。image 指令,在教程 背景的显示 已经出现过了。是用于载入图片的指令。layer 的值为 0 ,也就是指定图片在 0 号前景层上显示。
   这里,有一个 key 属性。key 属性是用来指定透明色的。像这种 0xRRGGBB 的形式,即 16 进制透明色指定,格式为RR(红) GG(绿) BB(蓝),指定的颜色填充的地方将被透明。例如,key=0xff00ff 就是 (r,g,b)=(255,0,255) 也就是指定了纯紫色为透明色。如果,key=255 这么指定的话, 对应图片"调色板"上编号为 255 的颜色将成为透明色。详细说明请参考 Reference 部分。

 storage="as" 这样,就是读入一张名为 as 的图片。不写明扩展名也没关系。这种情况下, KAG 会自动搜索名为 as 的可用图片并载入。

 visible=true 这么写是因为,KAG 的前景层在默认情况下是不显示的,不修改这个属性为 true 的话,即使载入图片也无法显示出来。

 left=340 top=100 ,用于指定前景层的左端位置和上端位置。前景层的位置可以在 image 指令读入的时候设定(拖鞋译注:另外一个办法就是用 layopt 指令设定位置啦)。

Note
 PNG 图片格式的情况,透明色指定无效。


 此外,使用遮罩图片的情况下,变为以下写法。

[image storage="bg0" page=fore layer=base]
[wait time=200]
*start|スタート
[cm]
[image layer=0 page=fore storage="asm" visible=true left=340 top=100]
你好。

 只是不需要加入 key 属性。
 这种情况,同时读入的将有以 asm_m 为名的遮罩图片,及以 asm 为名的主图片。

 PNG ,自带有透明通道信息或透明色的情况下,和上一例一样,不需要 key 属性。

../j/contents/LayerDisplayed.jpg
执行结果