全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1154
推到 Plurk!
推到 Facebook!

[轉載] 2D游戲中人物被遮擋的透明效果

 
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-08-15 10:40:30 IP:61.218.xxx.xxx 未訂閱
資料來源: 中國游戲技術資源網 http://www.gameres.com/      sea_bug      

2D游戲中人物被遮擋的透明效果

通常我們在2D游戲中經常使用人物的半透明效果來表示人物被建築物所遮擋,這種效果做法不但畫面效果較佳,而且能讓玩家更好的了解自己所控制玩家當前位置,才不會被物件所遮擋,茫然失去方向。這里,我們就是來講講簡單的處理方法。 我們的游戲場景一般由地表層、建築(遮擋)層、人物層來進行管理,其中建築和人物層必須經過排序處理來確定繪制的先后次序,這就產生了人物與建築、建築與人物的一種相互遮擋關系;我們來看看我們所需要的資源: 地表層圖象 人物圖象 遮擋物圖象 我們現在要做的就是把這3者有機的結合起來,組成我們的游戲畫面。 地表層通常不存在遮擋關系,因而一般都直接進行繪制,不需要多做處理,然后就是人物與物件遮擋的關系處理,一般情況下,我們都會得出這樣一個結果: 圖1 我們把最基本的東西實現了,但我們要如何實現人物部分的透明呢?這時候我們用一個很簡單的技巧就能夠實現,只要在人物原來的位置再繪制一邊Alpha混合的人物圖象,這樣就能得到我們所需要的效果: 圖2 我們馬上就可以看到人物的腦袋已經半透明的,但身體部分還保持原來的色彩,這是個很簡單的道理,如果兩張圖象一模一樣,那Alpha混合出來的的圖象還是圖象本身。 呵呵,是不是很簡單~~~~ 有沒有高級點的方法?這中方法好象很浪費機器性能。 的確,因為人物在繪制的時候多了重繪Alpha部分,性能上會有不少折扣,特別是在目前網絡游戲盛行,如果在一棵大樹下有幾十上百個玩家,那我們的機器就 ……(准備好滅火器,以免CPU過熱著火);當然,如果你的游戲人物不多或對性能要求不高,還是比較建議使用此方法,畢竟此方法簡單,而且不容易出錯。 :) 現在,我們來討論一下“高級”點的遮擋透明效果(由于方法眾多,這里只討論方法,沒有實際的做法)。 我們可以事先制作好各遮擋物體的掩膜(這個也可以用2D圖象中的ColorKey來代替或者用Alpha通道來實現),然后在繪制的時候根據掩膜進行相對判定,假設在繪制人物的過程中,程式遇到與遮擋物產生遮擋,此時人物圖象又有部分被遮擋物所覆蓋,那我們可以根據事先准備好的遮擋物掩膜來進行是否繪制人物各像素的判定;于此相同,在繪制Alpha部分的時候同樣根據遮擋物掩膜來判定是否進行繪制,這樣能夠在一定程度上緩解繪圖給程式帶來的負擔,但也給制作上帶來了複雜的計算,如圖: 圖3 后語,我們在游戲中使用什麼方式來實現游戲並不重要,關鍵是要在開發難度以及所獲得效果中取得平衡點,用最少的力實現最佳的效果,提高整體游戲開發的制作勢力。 CopyRight 中國游戲開發技術資源網 sea_bug 您可以任意轉載,但未經許可不可用于商業目的,轉載必須保留此聲明。2002/5/22 時間就是金錢---[ 發問前請先找找舊文章]
系統時間:2024-04-20 13:38:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!