[转]NS入门教程,第四篇



kiseeyou
2010-05-26 11:43:16

LEVEL 3 透明!透明!反锯齿图片制作与对话框
相关指令
transmode
:l;
:c;
:a;
setwindow
相关程序
反锯齿图片制作工具(NS安装包中均有提供)
bw2aconv.exe
--------------------------------------------------------------------------

NScripter的透明格式与设定方法:

透明色指定,也就是指定某张图片中的一个颜色(背景色)不显示,这点应该满好理解的。

NScripter有三种透明色指定格式:
left
copy
Alpha
第一种就是left。也就是上一讲已经提到的:
在使用显示图片命令,不做任何特别定义的时候,NS会把图片左边最上面的一个象素格(0,0)的颜色作为透明色。图片格式最好是BMP格式。

第二种copy,顾名思义,就是完全照搬,没有透明色。当然是用来显示方块状的图片了。

第三种,NS自己定义的透明格式。可以解决上次说到的JPEG的颜色问题。关于NScripter不支持自带透明通道的图片格式例如PNG之类的,确实很让人头大,不过应该是属于习惯就好吧……(躲过美工们的砖头)

但是最让我头大的,其实是……无论我怎么讲这个透明格式的原理,都有人反映听不懂……orz……
那么先讲一下怎么设定这三种透明格式吧。

第一种办法:
假如在*define区里加入transmode命令,就能设定游戏默认的透明格式。
上次说过,在不加设定的时候,默认为是左上点透明。

例如:
transmode left
transmode copy
transmode alpha

第二种办法:
当这张图片的显示格式不同于默认格式的时候,需要对每张图片单独定义透明格式。
还记得上一讲说到的人物图片显示命令吗?
ld c,"chr.jpg",10,700

假如,要把这张图片完全显示,没有任何透明色的话,这条命令就会改写成:
ld c,":c;chr.jpg",10,700

在””里,图片的名称前,增加了:c;
c,当然就代表copy。
同样的,写成 :a; 就代表采用NS自定义的透明格式。
而写成 :l;的话,就是以图片左上点为透明色了。

这种单独的参数设定方法在NS里相当常见。

而且,不只可以用来设定透明格式……具体请参见下一讲,lsp的混沌宇宙。=v=

--------------------------------------------------------------------------
bw2aconv.exe 反锯齿图片制作工具的使用:

说了这么多“理论基础”,终于可以开始说NS特定的透明格式了。

上一讲里提到的价格便宜量又足的JPG格式,这时候可以开始派上用场了。

那么首先我们来看看这两张图片。

附图(梵尘梦 尘风游戏组/五分之庭早期人设 友情客串:海亚辛斯)

[attachment=178]
[attachment=179]


这两张图片的区别就是……

一张背景是黑的,一张背景是白的,没错吧!(被众人殴打:你到底想说什么?!)

咳,咳,总之,个人猜测这就是bw2aconv.exe反锯齿图片制作工具的原理了。

如果这个象素点是作为背景存在的,也就是需要透明掉的部分,
那么,在这两张图片上,这一点的颜色就是不一样的。
这样,就让这个工具知道了哪些部分是需要透明掉的。
从而,生成了按照NS独特的透明格式制作出的图片,也就是下面这张。

[attachment=180]

bw2aconv.exe的使用方法就是这样:
[如果实在需要配图说明请回帖……看看需求量了……毕竟传图相当麻烦……=v=]

1准备两张同样的图片(BMP格式)。分别起名叫
图片名_b.bmp 和 图片名_w.bmp
第一张图片的背景色为黑色,第二张图片的背景色为白色。

2把这两张图片放在一个文件夹里。

3打开bw2aconv.exe。会跳出一个路径选择框。[这个程序本身放在哪里都无所谓。]

4选择这两张图片所在的文件夹。点确认。

5在这个文件夹里,会自动出现一个新的文件夹,名为“OUT”。

6打开这个out文件夹,就可以找到一张名叫 图片名.bmp 的图片了。

7现在,就算把这张图片转成JPG使用,也完全不会有锯齿出现了。
当然要记得用刚刚讲过的两种方法之一,把这张图片的透明格式设为alpha哦。

另外就是,bw2aconv.exe 会自动转换指定的文件夹内,所有按照这种格式起名的BMP图片。
所以,是可以批量生产的……
假如对透明格式没有更高的要求(比如说半透明,渐变之类的),这么做就可以了。

--------------------------------------------------------------------------

进一步的说明:

看看刚刚生产出来的那张图片,就会发现,右半边图片实际上是一个人物的剪影效果。
也就是说,在图片的左半边,需要显示的部分,在右半边表示为黑色。
而左半边需要透明的部分,在右半边表示为白色。
那么,图片的左半边,需要半透明的部分,在右半边,当然是……表示为灰色了……

总结:图片的右半边每一点的灰度=图片左半边对应点的不透明度
灰度越高越不透明。黑色是全不透明,而白色是全透明。

当然,如果打算做出半透明效果(例如50%透明的对话框),
bw2aconv.exe恐怕就帮不上什么忙了。

需要在PS或者其他作图软件里做这样的处理。这个,就要看美工技术了~

--------------------------------------------------------------------------

对话框的设定:

setwindow,这个恐怕是NScripter里参数最多最长的命令了。并且,相当的常用。
看看还剩点版面就讲了吧。这可是重点丫……

首先是超级简单的对话框,通常是一整块半透明的矩型,虽然不怎么华丽但是很清楚。
那么,除了对话框的颜色以外,还有多少个属性要设定呢?
对话框的位置和大小当然不用说,还有:
对话框里的文字具体显示在哪个位置,能显示几行,每行几个字
每个文字的具体大小,文字的间距,文字是否是粗体,是否要加阴影
还有,文字显示的速度,是一个字一个字慢慢显示,还是一整段文字一起显示。
以上这么多参数,都需要在setwindow里设定。

命令格式是这样的:

setwindow 文字显示位置X,文字显示位置Y,每行显示字数,可显示文字行数,文字长,文字宽, 行间距,列间距,文字显示速度(数值越小速度越快),是否粗体字(1粗体,0普通),是否阴影字(1阴影,0普通),对话框颜色(用颜色代码表示),对话框的左上点数值(2个数字)和右下点数值(2个数字)

例如:
setwindow 8,16,20,23,26,26,0,2,20,1,1,#999999,0,0,639,479

如果想要全透明的对话框,把颜色代码改成#ffffff就可以了。(纯白色……无视……=v=)

这个就是显示一个简单的半透明对话框的办法了。

如果需要复杂一点,把这个半透明矩形用一张对话框图片代替,之前的参数还是一样的。
但是从颜色代码开始就需要换个写法。

因为图片本身的大小就决定了对话框的大小,所以只要指定图片名称和图片的左上点位置就可以了。

setwindow 172,472,15,4,24,24,2,5,30,1,1,":a;picframe.jpg",0,0

上面这一行,看懂了吗?这个可是五分之庭的对话框显示数据哦……=v=

既然说了这个,就顺便在这里提一下,这些参数,其实都是可以用变数代替的。
[变数是什么?那是以后的事情了……]
另外,setwindow命令,应该用在*start到end的部分之间,也就是游戏执行部分。
这样就可以随时改变对话框的样子了。(那也别一句话一换啊……)

---------------------------------------

本日小贴士:
游戏制作得久了,所有的素材都堆在一个文件夹里,乱七八糟的看着都眼晕。
不妨利用下NScripter支持的多层文件夹。
也就是说,可以把人物图片、背景、音乐等等放到不同的文件夹里。
像刚刚上面写的
setwindow 172,472,15,4,24,24,2,5,30,1,1,":a;picframe.jpg",0,0
这里的 pic 就是frame.jpg 所放的文件夹名称了。
顺便沿用下LM2的素材文件夹名称,放背景的就叫bgd,放音乐的就叫bgm……
把东西分门别类的整理一下,是不是感觉舒服多了?
当然,再多建个几层,写成 picxyz123frame.jpg 也没关系……=v=