技術解説って回を重ねるごとに、簡単になっていく気がします・・・


最初のほうなんか、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億桁の開発状況報告②