忍者ブログ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【捨丸&KID】如何放置背景圖、人物圖

 

在這一章節我們要開始介紹如何放置背景圖或人物圖,請大家先隨便找一個可以當背景的圖以及人物立圖,以便之後程式碼的測試。

 

*  試著表示背景或event圖

 

*  bg命令

  bg命令是在背景表示部份表示圖像的命令。bg是background的縮寫。

  程式碼

 

  bg #FFFFFF,1

  bg black,1

  bg “BG¥ 093.JPG”,1

 

“ bg”為表示命令的本體。

bg後面所指定的東西可以像上面這樣分成三類的背景。

而指令行最後的1是effect號碼。關於effect號碼的用處會在之後說明,現在請先將它當成表現方法的種類。

一旦輸入bg命令後,人物圖像也會被reset。

 

*  單色背景

  bg #FFFFFF,1

 

  在bg命令之後放入#RRGGBB的RGB code則會使用那個RGB色塗滿背景畫面。常被用在表現純紅色、純白色、純藍色等單色背景上。雖然是單純的背景,但是藉由顏色的感覺能夠營造出許多性質。

 

  #FF0000(純紅色)

  背景為純紅色時能夠表現不安感、焦躁感等。

 

  #FF9933(橘色)

  飄盪著一種黃昏的感覺。

 

  #330066(紫色)

  能於晚上或是心情低落時當作背景。

 

*  黑白背景

  bg white,1

  bg black,1

 

在bg之後放入black或是white的英文單字就能夠使背景顏色如文字變為黑色或是白色。

 

*  圖像背景

  bg “BG¥ 093.JPG”,1

 

在bg命令之後將檔案名稱寫入””之間的話,就能夠表示這個圖像。

放在BG之後的¥是用來區分開資料夾和檔案名稱的記號。因此” 093.JPG”

代表「放在名為BG資料夾中的093.JPG」。

背景圖片放入此處

 

擷取.JPG

擷取1.JPG

 

 

使用的圖像種類

Nscripter能夠使用的圖像種類是bmp或jpg。除此之外保存格式的圖像無法使用。

程式碼範例

 

;mode800

*define

Clickstr"!?。」",2

game

*start

bg "BG\093.JPG",1

click

End

 

擷取3.JPG

  

圖像的大小

背景和event CG所使用的圖像請將大小調整為800x600(或是640x480)畫素。當表示和畫面不同大小的圖像時,會將畫面的中心和圖像的中心疊合表示。即使圖像太小也會讀取表示,但是不夠的部份會以黑色表示。

 

*           表示人物立圖看看

*  人物立圖是什麼?

人物立圖是在遊戲中角色登場時表示的圖像。

常於呈現大致的位置關係、或是有誰在場時使用。在近期也常會讓人物表情頻繁更換,或是改變姿勢這樣的作法。

這是接觸到玩家目光時間相當多的高重要度圖像。

(表示人物立圖時的畫面)

 

*  叫出人物立圖的命令

  程式碼

  ld 位置記號(r,c,l),叫出檔案名稱文字列,叫出效果號碼

 

  範例

  ld c,”:a;LD¥myth.jpg”,1

 

  c是表示位置的命令。

  畫面的三個地方能夠配置人物立圖,分別是右(r)左(l)中(c)。

(圖像表示位置圖)

 

  ld c,”:a;LD¥ myth.jpg”,1

  粗體字”:a;LD¥ myth.jpg”部份是叫出檔案名稱文字列的部份。

  :a為被稱為畫像tag的東西(會在之後說明)。

  LD¥為畫像所在的資料夾,myth.jpg為所表示的畫像名稱。

人物立圖放入此處

擷取.JPG

  ld c,”:a;LD¥XXX.jpg”,1

  1為effect號碼,這也會在後面說明。

 

*  人物立圖的遮罩

圖像檔案基本上為四方型的圖案,因此如果直接就這樣表示在畫面上則外部白色背景的部份也會一起被表示上去,相當的不自然。

因此,在叫出人物立圖圖像時會讓人物旁邊白色的部份被透明表示。這被稱為遮罩(mask)處理。

  遮罩處理有幾種方式,要使用哪種分式由「畫像tag」來決定。

 

 

*  畫像tag和透明化命令

畫像tag是夾在「:」、「;」之間部份所指定的代碼,如下列程式碼粗體字的a。

ld c,”:a;LD¥XXX.jpg”,1

如果沒有加上畫像tag就叫出畫像的話,預設的透明化option會以最左上角的畫素之顏色作為透明化處理的設定來表示,也就是預設的代碼是l後面會說明。

ld c,” LD¥XXX.jpg”,1

 

在此我們先取一張人物立繪來做例子

例子如下

Myth.jpg

在0.txt打入下列程式碼

;mode800

*define

Clickstr"!?。」",2

game

*start

bg "BG\093.JPG",1

click

ld c,":a;LD\myth.jpg",1

click

End

 

:a;

  ld c,”:a;LD¥myth.jpg”,1

選擇使用使用α channel的option。被表示的畫像會從中央分成左右兩張,並且設定為將右側的畫像作為α channel遮罩。

在圖像製作上是最麻煩的方式但是人物立圖所呈現的輪廓能夠最漂亮的透出。

(α channel圖像)

在這裡我們詳細說明α channel遮罩。

左邊為角色的圖像,而右邊則是有個像是黑影一樣的東西。在這右側是指定每個畫素的透明度的畫像。

在右側由從白色到黑色共256個濃度的畫素組成。當左右的畫像重疊時,和右邊畫像中黑色畫素重疊的地方不會變成透明(=被表示),而和白色畫素重疊的地方則會變成透明。

因此畫像的邊界能夠更加地融入背景之中,人物立圖就能夠被漂亮的表示出來。

擷取2.JPG

 

 

:m

  ld c,”:mLD¥mask.jpg;myth_1.jpg”,1

這個是選擇使用mask option。準備別的檔案作為遮罩畫像,然後將這個畫像設定為α channel。

mask.jpg的部份是遮罩的畫像名稱。在mask option的「m」之後馬上就輸入檔案名稱的文字列,這是個較不符合一般規則的程式碼。

當都是同樣姿勢只有表情不同的畫像很多時,可以節省下圖像右邊部份的容量。可以想成就是將:a:這個處理方式的左右部份開來。

myth_1.jpg

mask.jpg


擷取5.JPG
擷取4.JPG

 

:l;

LD c,”:l; myth.jpg”,1

選擇使用左上角畫素當作透明化的處理option。畫像左上角畫素的顏色會被當成透明化顏色處理的option。

被指定為透明化的顏色會被以表示為透明畫得部份。

但是如果指定了畫像中有使用到的顏色的話,那麼畫像中相同顏色的部份也會變成透明而空出洞來。

這也是Nscripter的預設透明化處理方式。

 

由於處理方式是透明化否則就是不透明化的二分法處理,如果是點圖(tot圖)的話能夠漂亮的透出。但是畫像有經過去鋸齒處理(anti-aliasing)的話,則在畫像的邊框上會出現粗糙的邊界。

(以左上角的畫素顏色設定為透明化顏色圖)

擷取6.JPG

注意全黑的部分都變透明了 剩下的殘骸就是在jpg圖檔破壞壓縮之下沒有去鋸齒化所造成的後果,因此通常人物立繪會使用α channel

 

 

:r;

LD c,”:r; myth.jpg”,1

將右上角的畫素設為透明化的處理option。畫像最右上角那格畫素的顏色會變成透明化顏色的option。

(以右上角的畫素顏色設定為透明化顏色圖)

擷取7.JPG

 

:c;

LD c,”:c; myth.jpg”,1

複製的處理option。畫像會沒有經過透明化就直接被表示。用於處理按鈕等四角形的物體。

擷取8.JPG

 

 

*  去除人物立圖

  cl a,1

  將人物立圖去除的命令,是clear的縮寫。

  cl是命令的本體,a是消去對象的位置。能夠指定r(右)c(中)l(左)a(全部)。

  1是去除時的effect號碼(關於effect會在之後說明)。

;mode800

*define

Clickstr"!?。」",2

game

*start

bg "BG\093.JPG",1

click

cl a,1

click

End

 

拍手[1回]

PR

【捨丸&KID】NS對話框文字表示(2)

 

在這一章節,我們要來介紹比較進階的對話框指令,讓大家可以有更多方法來調整對話框本身和文字的表示方法。

 

在進入後面較複雜的指令之前我們先向大家說明於程式碼中加入「註解」

「註解」在程式書寫中是非常重要的部份,人腦的記憶並不是個非常安定的儲存方式。所以當你寫了一個複雜的程式碼,過了三、四天後你再次看到時可能無法馬上想出他的目的。

因此適當地加入「註解」可以讓程式師有更好的工作效率,而當有多個成員同時負責程式部份的作業時,先溝通好的「註解」書寫方式,也可以省下許多溝通的時間。

 

*  註解:

當你輸入命令或是文章之後,有時後會想要留下注釋來提醒自己那是何種目的的命令或是文章。

在這種時候可以像下面這樣書寫。

 

天譴寶寶說!你好。;這裡可以隨便寫註解,並不會表示到遊戲畫面中。

 

從“;”到改行為止,該注釋範圍並不會被表現在畫面上。

 

 

當故事在進行過程中,很多時候我們不希望文字只是單純的出現,如果能夠讓它加上某些效果的話,也能夠提昇劇情的感染力。

例如當想要加強語氣的魄力或是讓玩家更注意時,我們會希望文字出現在畫面中央。這時可以利用「locate」這個指令。

 

*  locate

程式碼

locate 文字數,行數

範例

;mode800

*define

Clickstr"!?。」",2

game

*start

天譴寶寶說~\ 

locate 5,7;放在中央

「你好!」\

End

 

「文字數」是橫方向會跳過的文字數目。範例中為5個文字。

「行數」為縱方向會跳過的行數目。範例中為過7行,在第8行表示出來。

 

*  改變文字的顏色

當出現「怪物的叫聲」、「宛如吐血般的悲鳴」等,想要讓文字特別醒目,以及文字更直接呈現出內含的感情時可以使用。

程式碼例子:

#FFFFFF天譴寶寶說,#FF0000「你好!」

顏色的設定是由RGB code來進行設定。

在變更過顏色後可以輸入#FFFFFF來將顏色調回初期設定的白色。

 

*  強制停止文字表示的演出效果

在劇情的演出中,有時會出現表示重要的文字段落或是希望能夠讓玩家看到事件 CG還是各種效果的時機,這時會希望能夠暫時停止遊戲的進行。

例如是在出現衝擊性事實的場面、使用必殺技決勝負的場面、出現相當重要表情的事件 CG希望有點時間讓玩家慢慢看等實機。這時如果讓玩家直接click的話便會快速跳到下一個場面去而破壞了氣氛。當想要暫時停止遊戲的進行時,可以使用wait命令或是delay命令。如果輸入這些命令的話,則會如所設定的時間停止等待處理。

 

*  wait命令使用方法

程式碼

!w數值

wait 數值(注意命令跟數值中間要有半形空白)

範例

天譴寶寶說!

!w2000天譴寶寶說!你好。

天譴寶寶說!

wait 2000天譴寶寶說!你好。

 

wait命令會在所設定的時間中等待處理,在這時即使擊點左鍵有不會有反應。

“!w”和”wait”是命令本體。

數值部份請輸入想要停止的時間,單位是ms(1000ms=1s)。範例中數值為2000所以會停止兩秒。

在!w之後的數值無法使用變數。wait指令後的數值可以使用變數。

並要注意不要把指令夾在句子中間,例如「天譴寶寶說!wait 2000你好。」會發生甚麼事情可以自己去試試看~

 

*  delay命令使用方法

程式碼

!d數值

delay 數值

範例

 

天譴寶寶說!

!d 2000天譴寶寶說!你好。

天譴寶寶說!

delay 2000天譴寶寶說!你好。

 

delay命令雖然會在所設定的時間中等待處理,但是這時點擊左鍵的話就會被解除。

“!d”和”delay”是命令本體,其他的使用方法也都和wait命令相同。

和wait命令相同,”!d”之後的數值無法使用變數,而”delay”之後的數值可以使用變數。

 

*  wait和delay的組合

在等待較長效果音演奏得時候可以將這兩個命令組合使用。

例如先使用wait 命令等待0.5秒,然後在delay命令等待2秒。

天譴寶寶說!

wait 500delay 2000天譴寶寶說!你好。

 

當玩家越是專注時遊戲之時,越是常會有連續擊點的動作出現。在此時只使用delay命令的話,聲音一出來就會被click而被停止。

於是這裡可以先使用wait命令0.5秒,讓玩家至少會聽到效果音的開頭,然後在使用delay命令讓遊戲繼續進行的話便不會影響遊戲的節奏感。

 

但在使用上的時候要注意因個人的差異在體感時間上可能會有相當大的差異,使用wait和delay命令時最好能夠讓複數的人來測試,感覺其timing確認是否有達到想要的效果。

 

拍手[1回]