友人に更新が少ないって言われた>挨拶
---
画面切り替え時のフェードイン・フェードアウトを作成しました。これまでもあったんだけど、CGraphicsクラスに入れて全ゲームモードで使い回せるようにしました。
フェードのやり方は色々あると思うけど、俺は一番手前に画面全体を覆う白いスプライトを用意して、それの透過値を変えることで実現してます。
いちいち初期化するのも面倒なので、FadeMove()を呼んだらその中で初期化もループ動作も行ってます。例によって即値が入ってたり、無駄な処理があっても気にしない。
絵を描いたりボスキャラ組んだり、まだやることはたくさんあるな。
//—————————————————————————–
enum {
FADE_IN,
FADE_OUT,
FADE_BLACK,
FADE_WHITE
};
struct Fade {
float cnt; // 移動量
float now; // 現在の値
int color; // 色
int spr_no; // スプライトNo
BOOL complete; // 完了フラグ
};
//—————————————————————————–
// フェード動作
// in_out:フェードインかフェードアウトか
// minutes:フェードする秒数
// color:切り替わる色
BOOL CGraphics::FadeMove(int in_out, float minutes, int color)
{
RECT workRect;
// 初期化
if (fade.spr_no==-1) {
// フェード用画像登録
SetRect(&workRect, 0, 0, 47, 47);
fade.spr_no=CreateSprite("data\graph\status.png", workRect);
fade.now=1.0f;
fade.complete=TRUE;
}
if (fade.complete) {
// フェード開始
if (in_out==FADE_OUT) {
fade.cnt=1.0f/((float)minutes*60.0f);
fade.now=0.0f;
}
else {
fade.cnt=-1*(1.0f/((float)minutes*60.0f));
fade.now=1.0f;
}
fade.color=color;
fade.complete=FALSE;
}
else {
// フェード中
fade.now+=fade.cnt;
if (fade.now>=1.0f && fade.cnt>0) {
fade.now=1.0f;
fade.complete=TRUE;
}
if (fade.now<=0.0f && fade.cntFadeMove(FADE_IN, 0.8f, FADE_WHITE)) {
// フェード完了後の処理
………
}
// みたいにして置いておく
更新楽しみにしていました♪
ゲーム制作っていろいろ大変なんですね(当たり前ですね)
でもがんばってくださいね(‘-^*)/
出来上がるのを楽しみにしています。
ありがとうございます。
頑張ります。