技術解説って回を重ねるごとに、簡単になっていく気がします・・・
最初のほうなんか、3平方の定理の応用とか凄いことやってましたよね・・・
今日はきっと一番簡単です!
画面をフェードアウトさせるプログラムについて解説します。
フェードアウトとは、最初画面がうっすらと暗くなり、だんだん濃く暗くなり、もっと濃くなり、最後には真っ黒になる。この一連のことを言います。
これができるだけでゲームの見栄えがかなり変わってくるものです。
必要なものは、grectという命令とフェードアウトさせる画面
最初、フェードアウトさせる画面を別のバッファにコピーします
例、buffer 1,640,480,0:gcopy 0,0,0,640,480 ;バッファID1に現画面(ID0)をコピー
次にフェードアウトさせるフレーム数を考えます。だいたい16くらいがちょうどいいです。
毎フレームの手順としては、①バッファID1を現画面にコピー、②grectで真っ黒の画面を半透明コピー、③フレームが進むごとに半透明率を上げていく。
repeat 16
pos 0,0::gmode 0 ;①
gcopy 1,0,0,640,480 ;①
color 0,0,0:gmode 3,640,480,a+16 ;②
grect 320,240,0,640,480 ;②
a+=16 ;③
redraw 1
redraw 0
await 26
loop
こんな感じになります。
変数aを省略したいならgmode 3,640,480,a を gmode 3,640,480,16*cnt+16
に替えればおkですね。
注意すべき点はaが256を振り切らないようにすることです。
256を振り切るとたまに思わぬバグが発生します。
もしフェードアウトさせるフレーム数が16では足りなく32とかにする場合は
16*cnt+16 を 8*cnt+8
してください。
次回:1億桁×1億桁の開発状況報告②