|
通常來說,只要談到影子及影子制作,首先想到的不外乎3D。游戲中的影子設(shè)計大致可分為硬實現(xiàn)和軟實現(xiàn)兩種,比如像“游戲影子制作技術(shù)”這篇文章所談到3D游戲影子制作方案Projective Shadow、Shadow Map以及Shadow Volume均屬于硬實現(xiàn)。硬實現(xiàn)的效果最逼真,相對的運算量也較高;而對于Silverlight開發(fā)2.5D網(wǎng)游來說,我們通常會采用折中的軟實現(xiàn)去表述場景中的動態(tài)光影效果。精致的光影能讓玩家充分體驗到空間立體感,當然也是2.5D網(wǎng)游所不可或缺的條件之一。
Silverlight 2.5D網(wǎng)游中的光影效果軟實現(xiàn)主要采用模擬仿真方法,傳統(tǒng)的處理方案大致有三種:
一)垂直照射的固定圓影。我們可以假想當角色被頭頂上的光源所照射時會產(chǎn)生圓形光影,游戲中我們僅需一個圓影素材,根據(jù)角色的占地比例進行縮放匹配,2.5D立體效果立刻顯現(xiàn):
二)基于紙娃娃系統(tǒng)的動態(tài)光影。原理也很簡單,就是將影子作為角色紙娃娃的部件之一根據(jù)角色的實時動作與其他部件進行動態(tài)組合。以增加美術(shù)的工作量為代價換取程序設(shè)計簡單化:
三)動作同步映射的動態(tài)光影。與上一種方法所達到的效果一致,區(qū)別在于此方案我們無需額外的影子圖片資源,而是通過Silverlight內(nèi)置的WriteableBitmap配合上OpacityMask(透明蒙版)來實現(xiàn),比如類似如下邏輯:
WriteableBitmap writeableBitmap = new WriteableBitmap(role.OverallWidth, role.OverallHeight);
writeableBitmap.Render(role.Entity, null);
writeableBitmap.Invalidate();
Rectangle rectangle = new Rectangle() { Width = role.OverallWidth, Height = role.OverallHeight, Fill = new SolidColorBrush(Colors.Black) };
rectangle.OpacityMask = new ImageBrush() { ImageSource = writeableBitmap };
NET技術(shù):Silverlight 2.5D RPG游戲技巧與特效處理:(三)動態(tài)光影,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。