今回は、一部分だけ光っているように表現する方法について伺いに参りました。
現在、「夜の暗いフィールド上のあるオブジェクトが光を放って、そこだけ丸く明るくなっている」
という表現をしたいと思っています。
私の今作っているゲームの1フレーム中での大きな流れは、
0.ClearDrawScreen()
1.マップデータを元にマップチップを配置し、フィールドを描画する
2.フィールド上にオブジェクトを描画する
3.フィールド上の個々のオブジェクト内の処理をする(移動、当たり判定など)
4.ゲーム内の天気を画面全体に描画
5.ゲーム内の時間によって、画面全体の暗さを変化させる(昼ならそのまま、夜なら黒く)
6.ScreenFlip()
このように、フィールド上のオブジェクトを描画した後、画面全体に対して黒をブレンドし
夜の暗さを表現しております。ブレンドの方式はアルファブレンドを使っています。
夜の暗さの表現は、フィールドとオブジェクトと天気の描画の後、下のコードのように行っています。
if(Night<=Time || Time<Morning)//夜ならば { SetDrawBlendMode(DX_BLENDMODE_ALPHA,150); DrawBox(0,0,640,480,GetColor(0,0,0),TRUE);//画面を暗くする }光を放つあるオブジェクトをフィールドに配置して、
夜暗くなってもそのオブジェクトの周りだけ昼間のように明るいままにしたいと考えていますが、
どのようにすればいいのかと悩んでおります。
このとき、オブジェクトの中心に近いほどぼうっと明るく、中心から遠いほど暗い、といった表現にしたいです。
明るいままにしたいというのは、そのオブジェクトの周りだけ丸く、あるいは楕円形に
黒がブレンドされない、という感じです。
SetDrawArea()の使用を考えたのですが、これでは矩形にしか描画領域を設定できません。
マスク処理も考えてはいるのですが、この処理は重いため、
最後の手段にしようと考えています。
どのような手法を使えば、暗い画面の一部分だけ丸く明るく表現できるのでしょうか。