トップページ > 過去ログ > 記事閲覧
画面を揺らす処理をしたいのですが
名前:YA 日時: 2008/03/13 01:03

はじめまして、 今作成しているゲームの爆発シーンなどで画面を揺らすような処理をしたいのですが、 以下のように 裏画面をコピー画面に保存 GetDrawScreenGraph(0,0,640,480,Gr_Gamn_Copy); ↓ コピー画面を裏画面にオフセットをつけて描画 DrawGraph(Ofset_h,Ofset_v,Gr_Gamn_Copy,FALSE); ↓ 裏画面を表示 ScreenFlip(); とやっていますが、処理がとても重いのです。 なにかいい方法がありましたら教えて頂けませんでしょうか?

Page: 1 |

Re: 画面を揺らす処理をしたいのですが ( No.1 )
名前:優柔不断 日時:2008/03/13 01:12

裏画面の取得を揺らし始める前に一回だけ呼べば、だいぶ軽減されると思います。
Re: 画面を揺らす処理をしたいのですが ( No.2 )
名前:ZAP 日時:2008/03/13 07:47

>優柔不断さん その方法だと、画面が揺れている間に平行して爆発アニメーションなどをすることができないのではないでしょうか?
Re: 画面を揺らす処理をしたいのですが ( No.3 )
名前:TNT 日時:2008/03/13 09:12

GetDrawScreenは重いため、毎フレーム実行するとゲームにならなくなります。 揺らす以外にも、画面全体にエフェクトをかけたくなることは多いものです。 (例えば他には残像効果など) そこで、DXライブラリから提供されている“DrawGraph”などの関数に、自作の関数を一段噛ませると便利です。 例えば、 int DrawGraphR(int x, int y ,int gh, int flag){ 〜データの記録など、行いたい処理を記述〜 int X, Y; X = x + ...; Y = y + ...; DrawGraph(X, Y, gh, flag); return 1; } として、プログラムからはDrawGraphRを呼びます(名前は適当に規則を付けると良いです)。 この場合、他に「SetShakePower」のような揺らす強度を設定する関数を作り、広域変数ShakePowerに代入、 あとはDrawGraphRからShakePowerを参照して、フレームごと座標位置を計算します。 揺らすのなら、フレームカウントの剰余で判定すると便利でしょうか。 DrawGraphを自作関数に置き換えるのは面倒かもしれませんが、置換を利用すると案外あっさり作業が済みます。 また、広域変数を利用したくない場合はクラスを上手に利用するときれいにまとめることができます。
ありがとうございます。 ( No.4 )
名前:YA 日時:2008/03/14 19:29

皆様、回答ありがとうございます。 とりあえずTNTさんのおっしゃるとおり、自作の関数をひとつかませてみることにします(^^)

Page: 1 |