創作內容

24 GP

【RMXP小研究】地圖新增遮罩圖層增加畫面變化(修正)

作者:月見斐夜│新 RPG 製作大師 XP 中文版│2011-12-19 23:45:29│贊助:48│人氣:2360
※緊急更新於本文底層,原文內容並無改動,請見修正方法於本文底層後手動修改!


這是我從RMVX研究過來的效果,我很成功的把它復刻進XP了(靠

RMXP地圖圖層只有三層,對於一些追求畫面華麗的製作者來說往往是不夠的
像是陰影或是光照效果,常常要動用到第四層,也就是事件層,但是幹過這種把100個事件(就是我)都塞進一個地圖,就算事件執行條件是「按確定鍵」的情況下,也是卡的昏天暗地(我的情況是直接死機
這個時候常常被我們遺忘的「霧景圖層」就派上用場了
但問題就來了,畢竟霧景圖層只有一層,若用霧景圖層製作光照效果,就不能使用霧效果了





[使用霧景圖製作光照的效果,原本地圖有霧效果,卻被光照效果取代]



後來我玩外站的RMVX遊戲後,發現他們的地圖做得非常精美,我一度以為是地圖圖塊的問題,所以瘋狂地找類似素材,結果我翻呀翻的,居然給我翻到教學(汗

原來那個精緻到爆炸的地圖是用遮罩塊|||
其實在RMVX中所謂的遮罩塊也就是霧景圖層,原因為RMVX並無霧景圖層效果,僅有遠景圖效果
但是神奇的地方就在於,遠景圖和霧景圖套用的類同樣都是Plane.new,所以有聰明的老外就在RMVX的Spriteset_Map中新定義了Fog,而且還一次弄了三層(汗

了解到方法後當然立刻試著做

一樣XP的Fog圖層只有一塊,所以我照著那個教學裡說的新定義了一塊,但基於XP和VX寫法的不同,我一開始看了還有點霧颯颯,看明白後就是要增加一百層也沒關係(等等沒人會這麼做

尊重原作者教學,我一樣在XP的Spriteset_Map內新定義一層遮罩暫定為@ground

根據原作者寫法套用到XP的模式,在Spriteset_Map內def initialize部分中大約28行的地方
有一段
# 生成遠景層
@panorama = Plane.new(@viewport1)
@panorama.z = -1000




下面增加
# 生成遮罩層
@ground = Plane.new(@viewport1)
@ground.z = 3000

在下邊def dispose塊約71行部分
# 釋放遠景層
@panorama.dispose



下面增加
# 釋放遮蓋圖層
@ground.dispose




下邊def update的塊約131行
# 刷新遠景層
@panorama.ox = $game_map.display_x / 4
@panorama.oy = $game_map.display_y / 4




增加
# 刷新遮罩層
@ground.tone = $game_screen.tone
if @ground.ox != -$game_map.display_x / 256 or
@ground.oy != -$game_map.display_y / 256 or
@ground.ox == 0 or @ground.oy == 0
@ground.ox = $game_map.display_x / 4
@ground.oy = $game_map.display_y / 4
end











這樣基本上一個新的遮罩層就出來了(以下暫稱@ground)
但是我們並沒有定義@ground的內容,只是增加了個層,這樣套進去是沒有效果的
既然@ground套用的類和霧景圖、遠景圖一樣,檔案內容定義也可以放在fog或panorama裡
但是這裡為了區分遮罩、遠景、霧景,以及尊重原作者為由
請在自己專案中的Graphics下新增一個資料夾名為Overlays
以後若有光照效果圖就放在這個資料夾

接著在腳本旁的拉頁最上邊的Game_Temp上再插入一個空白腳本,然後取名為RPG::Cache
接著腳本內輸入下列內容
module RPG
module Cache
def self.overlay(filename)
self.load_bitmap("Graphics/Overlays/", filename)
end
end
end








這樣做是為了方便定義檔案位置

這樣以後要套用遮罩層的圖塊便可直接用
RPG::Cache.overlay(filename)
而不用輸入一大串的路徑名了

接著再讓我們動手改一改

讓我們回到Spriteset_Map裡剛剛增加的「生成遮罩層」的地方
修改成下面這樣
# 生成遮罩層
# 確認檔案是否存在
@GroundON = FileTest.exist?("Graphics/Overlays/" + "ground" + $game_map.map_id.to_s + ".png")
# 如果檔案存在的情況下
if @GroundON
# 生成圖層
@ground = Plane.new(@viewport1)
@ground.z = 3000
# 檔案名稱規格化
@ground.bitmap = RPG::Cache.overlay("ground" + $game_map.map_id.to_s)
end













這裡便將檔案的名稱格式規格化了,是為了方便統一
如果有用到光照效果的地圖,則該檔案名稱為「ground + 地圖ID 」
舉例:我第47號地圖需要用到遮罩層,則遮罩層檔案名為ground47
需放在Overlays資料夾下

接著應該有人發現了,如果在有地圖沒有使用光照圖的情況下,會報錯
這時又要動手修改
找到原本新增的「釋放遮蓋圖層」部分,改為下面
# 釋放遮蓋圖層
if @ground != nil # 檔案不為「無」的情況下
@ground.dispose
end






「刷新遮罩層」改為
if @ground != nil # 檔案不為「無」的情況下
# 刷新遮罩層
@ground.tone = $game_screen.tone
if @ground.ox != -$game_map.display_x / 256 or
@ground.oy != -$game_map.display_y / 256 or
@ground.ox == 0 or @ground.oy == 0
@ground.ox = $game_map.display_x / 4
@ground.oy = $game_map.display_y / 4
end
end

這樣就大功告成了!!

依此類推可以新增更多層,只要改掉前面的名稱定義就可以了

接下來開始動手作效果了

這是我截下來的遊戲內地圖圖塊(縮小過,原為XP地圖大小48X45格




(※別問我怎麼截,用鍵盤上的PrintScreen慢慢的把你地圖1/1的大小給截下來用繪圖軟體慢慢拼貼吧,該死的截圖腳本根本一點屁用也沒有,把width和height改成2000*2000,截出來的居然是以遊戲視窗最右上角一直往外延伸到你螢幕Screen的長寬厚一直再往外延伸出一片莫名其妙黑屋媽機的詭異東西)


這是陰影效果




這張地圖的ID是47
陰影圖塊的名稱便為ground47

放到遊戲中的效果





只有陰影圖塊是遮罩層喔
左上角陽光灑射是圖片,整張畫面的光照是霧景圖
然後燈光是腳本

其實效果不賴吧~(靠



於Q──S.T.大大所言,使用FileTest.exist?(filename)方法無法偵測到以加密資料夾是否有該檔案

所以原文內容僅對於未加密專案有效
若要加密則需照下面內容進行修改

1.於RPG::Cache腳本中最後一個end下新增

module RPG_FileTest
def RPG_FileTest.overlay_exist?(filename)
return RPG::Cache.overlay(filename) rescue return false
end
end








2.然後將「生成遮罩層」中的
@GroundON = FileTest.exist?("Graphics/Overlays/" + "ground" + $game_map.map_id.to_s + ".png")



修為
@GroundON = RPG_FileTest.overlay_exist?("ground" + $game_map.map_id.to_s + ".png")



完成!


目前我想到的解決方法為如此,若還有錯誤請通知!!

  
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=1489570
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:新 RPG 製作大師 XP 中文版|自製RPG|自製遊戲

留言共 16 篇留言

阿碳
真的是非常棒呢!!

12-20 01:09

月見斐夜
這種方式用得好的話...可以做出很噁心的偽3D...12-20 20:22
徽殷
!!!!!!!!!!!!![e17]

12-20 12:29

月見斐夜
?!!!!!!![e17]12-20 20:23
先行者
還不錯!!!效果真好,GP奉上!!

12-20 20:11

月見斐夜
很累人就是了,小圖還好,大圖就......[e26]12-20 20:23
月見斐夜
喔耶!!逛外站抓到好腳本,完美解決截圖累人問題=ω=12-21 23:20
先行者
是唷,分享一下吧。=ˇ=

12-22 10:25

月見斐夜
http://gameface101.playogame.com/t920-map-screen-shot-rmxp
進去時小心點,廣告爆多|||12-22 20:24
月見斐夜
你是請假還是電腦課啊??12-22 20:39
serflygod
好漂亮!!
期待遊戲成品

12-23 21:00

月見斐夜
這遊戲出來不是神作就是坑(被巴12-24 23:29
耀玄S.H.DXRS
看起來好棒!

12-24 12:43

月見斐夜
其實作法不難,可以作出很多層,戰鬥畫面也是同樣道理12-24 23:30

很棒!~感謝分享^^

12-24 13:15

月見斐夜
這種作法在外國的VX遊戲上很常見,可是我們這邊好像沒有見過...?12-24 23:31
冬兔
最近剛好也發現了光影的東西,
感謝分享研究,
想請教一下是否有辦法讓這層用加法的方式?

12-24 22:10

月見斐夜
在一開始生成的地方新增@ground.blend_type = 1
0為普通,1為加法,2為減法12-24 23:33
冬兔
感謝,看起來好多了=ˇ=

12-24 23:42

kiddragon
看起來很棒 =口=

12-27 11:19

阿碳
問一下
有沒有辦法讓主角顯示在遮罩前面?

01-12 18:35

月見斐夜
改Z值就可以了,不過不要太低,不然遮不到建築物01-14 23:25
木瓜
好久沒玩rmvx(?_)
都跑去畫漫畫了~
可是最近又出了RPGACE..所以想去踫這個了~!(某個有名的姨媽大已經在使用了?!

02-01 14:57

月見斐夜
我也有碰下ACE,雖然地圖資料庫的分類變得跟XP一樣,可是畫地圖時曬只有一層,不習慣= ="
但是ACE在RGSS3上的寫法比前兩代都高端很多(我覺得最爛的是VX的)
還有就是很獵奇的臉圖生成器,這東西告訴我們人體鍊成果然是被禁止的=__=02-01 17:40
木瓜
我是做rpg人設比較多=w=~(羞

02-01 18:07

黑歷史精
就像這種,還有我是用ACE= =

02-12 14:38

月見斐夜
ACE的語法還有層別內的分別都跟XP大大不同,在這邊不太好解釋,我有空幫你弄套插件式的腳本好了(汗)02-12 17:49
黑歷史精
歐謝謝月見大人。

02-12 18:38

黑歷史精
已解決,謝謝。
這在ACE其實不用腳本哈哈。

02-16 19:03

月見斐夜
阿咧?!
好險我還沒開始寫.....(靠02-18 20:13
我要留言提醒:您尚未登入,請先登入再留言

24喜歡★serena718 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:渣世界觀|||... 後一篇:有關遊戲的二三事~喵!...

追蹤私訊

作品資料夾

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】