2011年6月5日星期日

KAG教學---不要再製造不思議事件,顯示前景(2)

(k ゚∀゚)<一說到前景,可以有很多不同的變化的玩法。單是前景位置已經變化不少。

(k ゚∀゚)<不過在介紹設定前景位置之前,先解釋上一次的範例,那些範例我們並沒有設定位置,到底吉里吉里怎樣決定位置。

是不是預設圖片放在左上端,因為我看到立繪下面的位置在超出了視窗>( ゚ω゚ s)

(k ゚∀゚)<只是對了一半,的確那些範例把立繪圖片放在左上端,不過當沒有設定位置時,並不是預設為左上端,而是使用上一次這圖層所設定的位置。

(k ゚∀゚)<而吉里吉里提供兩種位置設定的方法,一是使用left和top兩個屬性,二是使用pos屬性。

(k ゚∀゚)<left和top兩個屬性是分別設定前景左端和上端的位置,視窗畫面的左上端便是原點,即是left和top都是0。以下是範例。

[image storage="bg1" page=fore layer=base]
;加上背景
[image storage="fg1" left=0 top=100 visible=true page=fore layer=0]
left=0 top=100[p][cm]
[image storage="fg1" left=100 top=0 visible=true page=fore layer=0]
left=100 top=0[p][cm]
[image storage="fg1" left=-200 top=0 visible=true page=fore layer=0]
left=-200 top=0[p][cm]
[image storage="fg1" left=400 top=-50 visible=true page=fore layer=0]
left=400 top=-50





















(k ゚∀゚)<left和top兩個屬性均是以pixel為單位,可以設定其值為任何的整數,包括負整數,使用left和top的好處是自由度高,但其缺點是設定有點複雜,位置可能需要調整多次才理想。一不小心就像範例中圖4的情況,立繪位置太高,被玩家看到像鬼魂一樣沒有腳。

(k ゚∀゚)<由於如果每次顯示立繪都設定left和top兩個屬性,會不太方便,所以image內提供pos這個屬性。

(k ゚∀゚)<pos這個屬性有預設了5個位置可以選擇,分別是left、left_center、center、right_center、right。正如字面意義,它們分別代表左、左中、中、右中、右這5個位置,以下是範例。

[image storage="bg1" page=fore layer=base]
;加上背景
[image storage="fg1" pos=left visible=true page=fore layer=0]
left[p][cm]
[image storage="fg1" pos=left_center visible=true page=fore layer=0]
left_center[p][cm]
[image storage="fg1" pos=center visible=true page=fore layer=0]
center[p][cm]
[image storage="fg1" pos=right_center visible=true page=fore layer=0]
right_center[p][cm]
[image storage="fg1" pos=right visible=true page=fore layer=0]
right






































的確是很方便。>( ゚ω゚ s)

(k ゚∀゚)<還有,吉里吉里提供了這5個位置的縮寫給大家,大家可以使用 l , lc , c , rc , r去代表這5個位置。

(k ゚∀゚)<不過需要留意,這5個位置只是預設的,原本的設定是適合於640x480大小的視窗,我們可以透過修改 Config.tjs 去改變它們的位置。特別是當大家修改了視窗大小,需要在 Config.tjs 再設定好位置。

(k ゚∀゚)<當我們解決了前景位置的問題後,再談論一下多個立繪或圖片該如何處理,之前曾經談及到我們可以建立多個前景圖層來顯示多個立繪或圖片,請記住一點,每個圖層只能在前頁面(表ページ)放置一個立繪或圖片,看看之前的範例,我們把layer設定為0,理論上前景圖層的數量並沒有限制的,大家可以把layer設定為0以上的整數來顯示多個前景。

你說數量沒有限制,但是為什麼我使用layer=3時發生錯誤?>( ゚ω゚ s)

(k ゚∀゚)<所以我說是理論上,實際上受到 Config.tjs 裡 numCharacterLayers 變數的設定限制,如果沒有修改,最大的數量是3個,即是只能夠使用layer0、layer1和layer2。以下的範例需要修改 numCharacterLayers 為5才能執行。

[image storage="bg1" page=fore layer=base]
;加上背景
[image storage="fg1" pos=l visible=true page=fore layer=0]
[image storage="fg1" pos=lc visible=true page=fore layer=2]
[image storage="fg1" pos=c visible=true page=fore layer=4]
[image storage="fg1" pos=rc visible=true page=fore layer=3]
[image storage="fg1" pos=r visible=true page=fore layer=1]
顯示5個立繪


















(k ゚∀゚)<各個圖層也有上下順序關係,數字越大,圖層則顯示得越上面。如果中央的立繪(layer4)遮蓋了鄰近的兩個立繪 (layer2和layer3) ,因為相比於layer2和layer3,layer4比這兩個較高。疊起來的時候layer4較前面,遮蓋了layer2和layer3。

為什麼要有numCharacterLayers 變數的限制,直接把它改成100就不用麻煩。>( ゚ω゚ s)

(k ゚∀゚)<這限制是因為每個圖層要預留一些記憶體去存取圖片。如果設定得太多的話,會浪費記憶體。

(k ゚∀゚)<前景圖層的應用層面十分廣泛,例如介面、對話框和SD,甚至有些遊戲把立繪和表情分開,減輕美術方面的重擔。

立繪和表情分開? >( ゚ω゚ s)

(k ゚∀゚)<由於立繪和表情分開起來,繪師只要重畫表情就可以,不需要重畫整個立繪,亦可以減少檔案大小,特別是BMP檔案。

(k ゚∀゚)<不過一不小心就會發生"顏面分離"的問題,而且有活生生的例子,戯画在2006年發售的『Always 〜ふと、気が付けばキミとの日常…〜』,初回版有嚴重bug,做成顏面分離,成為很好的反面教材。

(k ゚∀゚)<啊......也差不多暫停一下,下一回再繼續討論前景顯示。

1 則留言: