▼ 檢視:
#=====================================================================
# ■ Ago の軌道物語 ■
#------------------------------------------------------------------------------
# ※ 官方網(wǎng)站 http://agolocus.weebly.com ※
#------------------------------------------------------------------------------
# ○ 粒子系統(tǒng) v1.00 ○
# 作者:先行者
#------------------------------------------------------------------------------
# ○ 使用說明 ○
# └ 可令地圖畫面產(chǎn)生粒子動畫特效。
#------------------------------------------------------------------------------
# ※ 官方網(wǎng)站 http://agolocus.weebly.com ※
#------------------------------------------------------------------------------
# ■ Ago の軌道物語 ■
#=====================================================================
▼ 使用方法:
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
如上圖,粒子的發(fā)射器設(shè)定是在事件名稱後方以"#"符號追加設(shè)定,當(dāng)進入該地圖後偵測到事件名稱設(shè)定則自動以該事件的位置作為中心以軌跡公式射出粒子:
第一個 # 後方接的是發(fā)射器發(fā)射粒子的 ID
1.00 版有火焰為 0 、光點為 1 、瀑布水花為 2 、螢火蟲為 3 以及光柱為 4 ,未來版本更新後可能追加新粒子。超出此範(fàn)圍的會發(fā)射默認(rèn)粒子。
第二個 # 後方接的是發(fā)射器發(fā)射粒子的強度
1.00 版中強度可設(shè)定 1~5 ,超出此範(fàn)圍者會自動修正到範(fàn)圍內(nèi)。
第三個 # 後方接的是發(fā)射器發(fā)射粒子的時間
1.00 版中時間以幀數(shù)為單位, 40 幀為 1 秒,若該位置不為正數(shù)則該發(fā)射器會永久發(fā)射。
若以上圖範(fàn)例則是將該目標(biāo)事件作為發(fā)射器會不斷發(fā)射強度為 2 的火焰。
素材部分請將粒子圖片設(shè)定到 Demo 範(fàn)例的 Graphics\Particles 裡面:(若使用到自己的專案時也請在 Graphics 目錄下建立一個 Particles 資料夾,將粒子圖片丟到裡面)
● 火焰粒子的有兩個圖片來源分別是 fire_1.png 以及 fire_2.png
● 光點粒子的圖片來源是 light.png
● 瀑布水花粒子的圖片來源是 water_fall.png
● 螢火蟲粒子的圖片來源是 firefly.png
● 光柱粒子的圖片來源是 beam.png
● 默認(rèn)粒子的圖片來源是 white_light.png
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
▼ 效果預(yù)覽:
此次的效果預(yù)覽結(jié)合了燭光系統(tǒng)的應(yīng)用來呈現(xiàn),並非完全包含到燭光系統(tǒng)。
Demo 範(fàn)例裡面也僅會包含此次的腳本。
▼ 雜論:
原本一開始想說為了效能只用了一個 Sprite 來做,但是發(fā)現(xiàn)如果只用一個 Sprite 的 blt function
畫粒子,粒子和粒子之間就沒辦法算加法效果
然後就自己用 get_pixel 和 set_pixel function 硬幹了一個能做加法效果的 blt function,但是計算量太大實在是卡到不行,連兩張 640 * 480 的圖疊加時計算也要 1 秒真的太久了
跑去研究其他人寫的有加法效果的 blt 發(fā)現(xiàn)都是已經(jīng)包在 DLL 裡面的擴充庫在算,
於是放棄全部都用 Sprite 畫每個粒子,發(fā)現(xiàn)效能也不差而且每個粒子之間也都能用加法效果
最後想想 Tilemap 其實也是以大量 Sprite 構(gòu)成的,再多幾個 Sprite 應(yīng)該也不會差多少吧
再不然就是現(xiàn)在硬體設(shè)備已經(jīng)夠好了,所以我現(xiàn)在才感受不到 code 的冗度
遙想國中的時候嘗試還原整個內(nèi)建動畫的時候卡到不行...(遠(yuǎn)目
▼ 源碼下載:
下載點 1 【dropbox】
下載點 2 【MEGA】
下載點 3 【mediafire】