ETH官方钱包

切換
舊版
前往
大廳
主題

【地圖腳本】粒子系統(tǒng) v1.00

先行者 | 2017-08-09 20:20:44 | 巴幣 16 | 人氣 487

檢視:

#=====================================================================
# ■ 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】
送禮物贊助創(chuàng)作者 !
0
留言

創(chuàng)作回應(yīng)

SLAND
讚ㄛ[e19]
2017-08-09 23:41:32
先行者
謝謝[e16]
2017-08-10 10:43:18
養(yǎng)樂多
感覺可以把地圖做得更精美呢[e12]
2017-08-09 23:46:52
先行者
當(dāng)初其實也是為了地圖特效,但是發(fā)現(xiàn)做出來之後感覺可以直接拿來當(dāng)作動畫輸出XDDD
2017-08-10 10:44:03

更多創(chuàng)作