ページ 1 / 1
エフェクトをゆっくり表示するには
Posted: 2014年11月17日(月) 18:37
by JON
現在RPGを制作しており、攻撃するときの斬撃エフェクトを表示したいと思っています。
エフェクト素材9枚をLoadDivGraphで読み込み、表示しているのですが
コード:
if ( Key[KEY_INPUT_RETURN] == 1) {
for (int i = 0; i < 9; i++) {
DrawGraph(250, 200, effect1[i], TRUE);
}
}
のようにするとあっという間に表示が終わってしまいます。
色々考えてみてもなかなかうまくいかず困っています。
この場合どのように考えるといいのでしょうか?
Re: エフェクトをゆっくり表示するには
Posted: 2014年11月17日(月) 21:06
by jay
すぐ消えちゃうのは
1フレームに1枚しか画像を表示していないから(9枚でも9フレームでおしまい)ですね
じゃあどうしたらいいかと言うと
1画像1枚当たりの表示時間を長くすればいいんですね
でも具体的な方法はと聞かれたら
色々ある!
としか答えられません
そのコードを書き直して作る場合で、一番簡単な方法だと
コード:
for (int i = 0; i < 36; i++)
{
DrawGraph(250, 200, effect1[i/4], TRUE);
}
多分こんな感じじゃないでしょうかね
これで画像1枚あたり4フレームになります(合計36フレーム)
カウンタがint型だからできることですね
Re: エフェクトをゆっくり表示するには
Posted: 2014年11月17日(月) 21:18
by みけCAT
jay さんが書きました:そのコードを書き直して作る場合で、一番簡単な方法だと
コード:
for (int i = 0; i < 36; i++)
{
DrawGraph(250, 200, effect1[i/4], TRUE);
}
多分こんな感じじゃないでしょうかね
これで画像1枚あたり4フレームになります(合計36フレーム)
使用しているのがDXライブラリで、
DrawGraphが(マクロなどで変な定義がされておらず)DXライブラリの標準関数であると仮定すると、これは違います。
これを実行すると1フレームで36回の描画を同じ位置に行い、透過されていない画像であれば最後のeffect1[8]のみが見えるはずです。
なお、あらかじめ封じておくと、DXライブラリでのゲームプログラミングにおいて
WaitTimerを使うことやメインループ以外でScreenFlipなどを使うことは
あまりよくないとされています。
カウンタなどで状態を持たせてください。
Re: エフェクトをゆっくり表示するには
Posted: 2014年11月17日(月) 22:26
by jay
あぁ、ホントですね
なんか自分の都合のいいように
前提条件つけてましたね
コード:
static int i = -1; //カウンタ宣言
//カウントが始まっていないときにキーを押したら
if ( Key[KEY_INPUT_RETURN] == 1 && i == -1)
i = 0;
//描画
DrawGraph(250, 200, effect1[i/4], TRUE);
if(i >= 0) //カウントアップ
i++;
if(i == 36) //カウント終了
i = -1;
それじゃあこんな感じでどうでしょう?
早くも原型なくなりましたけど(苦笑)
Re: エフェクトをゆっくり表示するには
Posted: 2014年11月17日(月) 22:52
by みけCAT
jay さんが書きました:それじゃあこんな感じでどうでしょう?
早くも原型なくなりましたけど(苦笑)
まず自分でテストしてみましたか?
Re: エフェクトをゆっくり表示するには
Posted: 2014年11月17日(月) 23:26
by jay
わざわざそこまではしていませんね
個人的には、回答することにメリットがあるわけでもないから
そこまでする必要性を感じませんので
しかし善意で回答して、間違いを教えても
ありがた迷惑でしかありませんから
僕は引っ込むことにします
>>JONさん
申し訳ありませんが、僕の回答は見なかったことにしてください
Re: エフェクトをゆっくり表示するには
Posted: 2014年11月18日(火) 00:11
by みけCAT
jay さんが書きました:わざわざそこまではしていませんね
個人的には、回答することにメリットがあるわけでもないから
そこまでする必要性を感じませんので
しかし善意で回答して、間違いを教えても
ありがた迷惑でしかありませんから
僕は引っ込むことにします
>>JONさん
申し訳ありませんが、僕の回答は見なかったことにしてください
ごめんなさい、質問者だと勘違いしました。
とくにおかしな点は無いと思います。
Re: エフェクトをゆっくり表示するには
Posted: 2014年11月18日(火) 00:45
by JON
回答ありがとうございます。
とても参考になり、無事エフェクトを目的通りゆっくり表示させることができました!
まだまだ私は考え方が甘く、もっと勉強しなければいけませんね...
簡単な質問をするかもしれませんが、また行き詰ったときはよろしくお願いします。