2D遊戲中的技能特效

2021-03-31 10:47:38 字數 1043 閱讀 7266

在我們的2d圖形遊戲中不可缺少大量的光影、技能特效,像diablo ii中的魔法效果的實現,幸好我們擁有強大的cpu來為我們實現alpha混合與色彩飽和混合,接下來讓我們來討論一下如何用這些方法來實現我們遊戲中所需要的技能特效。

一、alpha混合特效

alpha混合可以讓我們讓我們將一張圖象按一定程度的比例與另一張圖象進行混合(如圖1),但普通的alpha混合並不適合遊戲中的技能特效的顯示,這時候我們只需要新增一些資料讓混合更準確些,為了實現這樣的效果,我們往圖象中加入alpha通道資料(如圖2),然後我們再根據通道資料來進行混合就可得到如圖3的混合效果,現在看起來是不是更像特效了。 :) 

不過問題始終還是有的,只要仔細觀察,不難發現在圖3中的特效周圍有黑影,這似乎給我們的技能效果新增了一點瑕疵,為什麼會這樣?因為我們的程式是根據圖象上的通道資料來進行不同程度的alpha混合處理,但在特效邊緣實際上rgb色彩值更接近於黑色(r=0、g=0、b=0),一旦這樣混合後,周圍肯定會產生黑邊,不過可以放心,這裡我們可以用乙個簡單的技巧來輕鬆避免黑邊的產生,那就是將圖2中的rgb色彩圖用灰色背景來填充,這樣在混合之後就沒有黑邊,至少看起來沒有以前明顯了,這裡沒有最後效果圖,最後的效果還是由你自己的程式來實現吧。

圖1普通的整圖alpha混合

圖2

圖3alpha+通道混合的效果

圖4色彩飽和處理的效果

二、色彩飽和特效

與alpha混合相比,色彩飽和更適合於特效的製作,無論從效能上講,還是從效果上說,色彩飽和比alpha混合更勝一籌(如圖4)。可能因為色彩飽和的演算法過於簡單,很少有進行介紹的,我們先就對色彩飽和的方法來進行介紹一下,混合公式:

r1、g1、b1 : 圖象畫素點的源色值;

r2、g2、b2 : 底圖畫素點的源色值;

r = r1 + r2;( if r > 255 then r = 255 )

g = g1 + g2;( if g > 255 then g = 255 )

b = b1 + b2;( if b > 255 then b = 255 )

r、g、b就是我們所需的混合結果。

中國遊戲開發技術資源網

2D遊戲中的技能特效

在我們的2d圖形遊戲中不可缺少大量的光影 技能特效,像diablo ii中的魔法效果的實現,幸好我們擁有強大的cpu來為我們實現alpha混合與色彩飽和混合,接下來讓我們來討論一下如何用這些方法來實現我們遊戲中所需要的技能特效。一 alpha混合特效 alpha混合可以讓我們讓我們將一張圖象按一定程...

2D遊戲中的碰撞檢測

近期做了乙個類似坦克大戰的android遊戲。關於碰撞檢測有一些收穫,記錄一下。開始的思路是,將遊戲分成行列組成的小塊,當玩家或者怪物移動到某塊時,就將此小塊的id改為玩家或者怪物的id,子彈和怪物的碰撞,也是同樣處理。但是這樣造成的問題就是,每次玩家和怪物都必須行走乙個整格仔。玩家的移動,看起來有...

2D遊戲中如何載入主要元素

載入遊戲背景之後,可以使用座標值的變換來移動背景。接下來需要載入主角元素。匯入隨機函式 選擇python作為開發語言,用到乙個隨機函式。import random random.randrange 10,100 載入主角飛機 假設主角的飛機是從下往上飛,那它的飛機頭應該是朝著電腦螢幕上方,而敵人的飛...