原作者為 nikles,本文由 highway★負(fù)責(zé)翻譯。
在玩過(guò) Environmental Station Alpha之后,我也想實(shí)現(xiàn) Hempuli(上句那個(gè)游戲的開(kāi)發(fā)者)在他的游戲做出的效果。我不知道該如何實(shí)現(xiàn),所有我不得不從頭開(kāi)始,思考不同的方法。
我對(duì) shader(譯注:著色器,如果你是初學(xué)者,還是敬而遠(yuǎn)之,對(duì)美術(shù)基礎(chǔ)和數(shù)學(xué)還有編程的要求挺高的)一竅不通,所以只能用 surface 了。我寫了一些代碼,然后立刻撞墻……我有點(diǎn)兒懵逼,就去yoyogames 的論壇上求助,看了其他人的評(píng)論之后,我終于想出一個(gè)相當(dāng)不錯(cuò)的解決辦法。
實(shí)際代碼
在你的游戲控制 object(起名隨意,比如 oGame、oCont 之類的)的 create 事件中,寫下面的這些東西。
代碼:
?
- // 名字縮寫,方便后面用,要不然代碼太長(zhǎng),看著費(fèi)勁
- dw = display_get_width()
- dh = display_get_height()
- ?
- tearings_surface = surface_create(dw, dh) // 我們要把這個(gè)繪制到 surface
- tearings_y = 0
- band_num = 16 // 屏幕上要出現(xiàn)多少個(gè)橫條
- band_height = dh / band_num
- tearings_x_offset = 32 //你要怎樣水平移動(dòng)橫條
- tearing_speed = 4 // 修改這里可以加速/減速
復(fù)制代碼
I place the following code inside a draw_post event of my controller。下面這些東西寫在剛才那個(gè) object 的 draw_post 事件中。
代碼(已修正):
?
?
- // 如果 surface 不存在便創(chuàng)建它
- if !surface_exists(tearings_surface)
- tearings_surface = surface_create(display_get_width(), display_get_height())
- ?
- // 給 surface 設(shè)置目標(biāo)
- surface_set_target(tearings_surface)
- ?
- draw_clear_alpha(c_black, 0)
- ?
- // 我們將部分應(yīng)用 surface 繪制在撕裂 surface 上
- for (var current_band = 0; current_band < band_num * 2; current_band++)
- {
- draw_surface_part(application_surface, 0, band_height * current_band - tearings_y, dw, band_height, sin( (degtorad(360) / band_num ) * current_band) * tearings_x_offset , band_height * current_band - tearings_y)
- }
- ?
- // 始終重置目標(biāo) surface
- surface_reset_target()
- // 繪制實(shí)際 surface
- draw_surface_stretched(tearings_surface, -tearings_x_offset, 0, dw + tearings_x_offset * 2, dh)
- // 移動(dòng)撕裂
- tearings_y = (tearings_y + tearing_speed) % (band_height * band_num)
我的做法就是這樣~我還會(huì)再弄一個(gè)垂直撕裂的類似版本出來(lái)(水下關(guān)卡?沒(méi)準(zhǔn)兒~)希望這篇小文章對(duì)你有幫助。
關(guān)于 surface 的使用要注意:如果你不用的時(shí)候,請(qǐng)記住一定要釋放 surface,否則會(huì)引起內(nèi)存泄漏越來(lái)越卡或者可能崩潰。
via:indienova
銳亞教育,游戲開(kāi)發(fā)論壇|游戲制作人|游戲策劃|游戲開(kāi)發(fā)|獨(dú)立游戲|游戲產(chǎn)業(yè)|游戲研發(fā)|游戲運(yùn)營(yíng)| unity|unity3d|unity3d官網(wǎng)|unity3d 教程|金融帝國(guó)3|8k8k8k|mcafee8.5i|游戲蠻牛|蠻牛 unity|蠻牛
- 還沒(méi)有人評(píng)論,歡迎說(shuō)說(shuō)您的想法!