エフェクトをゆっくり表示するには

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
JON
記事: 8
登録日時: 5年前

エフェクトをゆっくり表示するには

#1

投稿記事 by JON » 5年前

現在RPGを制作しており、攻撃するときの斬撃エフェクトを表示したいと思っています。
エフェクト素材9枚をLoadDivGraphで読み込み、表示しているのですが

コード:

if ( Key[KEY_INPUT_RETURN] == 1) {
		for (int i = 0; i < 9; i++) {
			DrawGraph(250, 200, effect1[i], TRUE);
		}
	}
のようにするとあっという間に表示が終わってしまいます。
色々考えてみてもなかなかうまくいかず困っています。

この場合どのように考えるといいのでしょうか?

jay
記事: 314
登録日時: 9年前
住所: 大阪市
連絡を取る:

Re: エフェクトをゆっくり表示するには

#2

投稿記事 by jay » 5年前

すぐ消えちゃうのは
1フレームに1枚しか画像を表示していないから(9枚でも9フレームでおしまい)ですね

じゃあどうしたらいいかと言うと
1画像1枚当たりの表示時間を長くすればいいんですね

でも具体的な方法はと聞かれたら
色々ある!
としか答えられません

そのコードを書き直して作る場合で、一番簡単な方法だと

コード:

for (int i = 0; i < 36; i++) 
        {
            DrawGraph(250, 200, effect1[i/4], TRUE);
        }
多分こんな感じじゃないでしょうかね
これで画像1枚あたり4フレームになります(合計36フレーム)
カウンタがint型だからできることですね
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ

アバター
みけCAT
記事: 6250
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: エフェクトをゆっくり表示するには

#3

投稿記事 by みけCAT » 5年前

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などを使うことはあまりよくないとされています。
カウンタなどで状態を持たせてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

jay
記事: 314
登録日時: 9年前
住所: 大阪市
連絡を取る:

Re: エフェクトをゆっくり表示するには

#4

投稿記事 by jay » 5年前

あぁ、ホントですね

なんか自分の都合のいいように
前提条件つけてましたね

コード:

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;	
それじゃあこんな感じでどうでしょう?
早くも原型なくなりましたけど(苦笑)
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ

アバター
みけCAT
記事: 6250
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: エフェクトをゆっくり表示するには

#5

投稿記事 by みけCAT » 5年前

jay さんが書きました:それじゃあこんな感じでどうでしょう?
早くも原型なくなりましたけど(苦笑)
まず自分でテストしてみましたか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

jay
記事: 314
登録日時: 9年前
住所: 大阪市
連絡を取る:

Re: エフェクトをゆっくり表示するには

#6

投稿記事 by jay » 5年前

わざわざそこまではしていませんね
個人的には、回答することにメリットがあるわけでもないから
そこまでする必要性を感じませんので

しかし善意で回答して、間違いを教えても
ありがた迷惑でしかありませんから
僕は引っ込むことにします

>>JONさん
申し訳ありませんが、僕の回答は見なかったことにしてください
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ

アバター
みけCAT
記事: 6250
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: エフェクトをゆっくり表示するには

#7

投稿記事 by みけCAT » 5年前

jay さんが書きました:わざわざそこまではしていませんね
個人的には、回答することにメリットがあるわけでもないから
そこまでする必要性を感じませんので

しかし善意で回答して、間違いを教えても
ありがた迷惑でしかありませんから
僕は引っ込むことにします

>>JONさん
申し訳ありませんが、僕の回答は見なかったことにしてください
ごめんなさい、質問者だと勘違いしました。
とくにおかしな点は無いと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

JON
記事: 8
登録日時: 5年前

Re: エフェクトをゆっくり表示するには

#8

投稿記事 by JON » 5年前

回答ありがとうございます。

とても参考になり、無事エフェクトを目的通りゆっくり表示させることができました!

まだまだ私は考え方が甘く、もっと勉強しなければいけませんね...


簡単な質問をするかもしれませんが、また行き詰ったときはよろしくお願いします。

閉鎖

“C言語何でも質問掲示板” へ戻る