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