ゲームが動いてる状態でフェードアウトして次の処理に移行させたいのですが上手く出来ません。
↓の処理だと一瞬真っ暗になってすぐゲーム画面に戻ってしまうのですがどうすればいいでしょうか?
ゲームを動かしたままフェードアウトさせたい
Re: ゲームを動かしたままフェードアウトさせたい
この関数だと、ゲーム画面は動かないと思います。
この関数はwhile文等で繰返し呼び出されているのですよね?
もし動かしたいのなら、この関数が呼び出される毎にBrightの値を下げて行き
if文などで255まで行ったら元に戻してあげる感じではどうでしょうか?
この場合だと画面を描画する前に呼び出す必要はあります。
この関数はwhile文等で繰返し呼び出されているのですよね?
もし動かしたいのなら、この関数が呼び出される毎にBrightの値を下げて行き
if文などで255まで行ったら元に戻してあげる感じではどうでしょうか?
この場合だと画面を描画する前に呼び出す必要はあります。
Dango San
-
へにっくす
Re: ゲームを動かしたままフェードアウトさせたい
当たり前でしょ、、felnad さんが書きました:ゲームが動いてる状態でフェードアウトして次の処理に移行させたいのですが上手く出来ません。
↓の処理だと一瞬真っ暗になってすぐゲーム画面に戻ってしまうのですがどうすればいいでしょうか?
輝度の設定は、
「これから書く描画を、この明るさで書いてね♪」
という命令ですから、すでに描画されたものに対しては反映されません。
そこをもう一度考えましょう
以下のような感じ?
void gameend(){
int i;
SetDrawScreen( DX_SCREEN_BACK ) ;
WaitTimer( 0 ) ;
for( i = 0 ; i < 255 ; i+=3 ) //
{
// メッセージ消化
if ( 0 != ProcessMessage() ) break;
// 画面を初期化する
ClearDrawScreen() ;
// 輝度を設定する
SetDrawBright( 255 - i , 255 - i , 255 - i ) ;
// フェードアウトさせたいプレイヤーを描画する
// DrawBox( PlayerX , PlayerY ,PlayerX + 48 , PlayerY + 48 , GetColor( 255 , 0 , 0 ) , TRUE ) ;
// 裏画面の内容を表画面に反映させる
ScreenFlip() ;
}
// 輝度を元の設定にする
SetDrawBright( 255 , 255 , 255 ) ;
}- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ゲームを動かしたままフェードアウトさせたい
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
へにっくす
Re: ゲームを動かしたままフェードアウトさせたい
不適切な実装3. あちこちにDXライブラリ3大処理があるsoftya(ソフト屋) さんが書きました:なにげに下記の条件に該当しているプログラムな気がします。
「補足資料.11章 書いてはいけない4つの処理」
http://dixq.net/g/h_11.html
に該当しますね。失礼しました…
DxLib_End()を呼ぶ直前に、gameend()を呼んでいる意識ですが
そんでもメインの他に3大処理があるのはいただけないですよねw
なのでfelnadさんも、気をつけましょう。