読み込んだエフェクトを順番に表示する方法

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

読み込んだエフェクトを順番に表示する方法

#1

投稿記事 by 放浪中 » 10年前

slash_ice.png
エフェクトの例です。
slash_ice.png (1.49 KiB) 閲覧数: 1831 回
二度目の投稿になります。以前、2Dの衝突判定を質問したものです。現在、DXライブラリで2Dのゲームを制作しています。Xキーを押すとエフェクトを表示する、というプログラムを作成しているのですが、LoadDivGraphで読み込んだエフェクト画像をパラパラ漫画のように表示する方法が分からなくてつまずいてしまいました。for文で繰り返して表示するのか、または別の方法があるのか、初歩的な質問ですがどうか教えてください。

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

Re: 読み込んだエフェクトを順番に表示する方法

#2

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

エフェクト表示の残り時間によって表示する画像を切り替えるといいと思います。

コード:

#include <DxLib.h>

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	if (ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() != 0) return -1;
	SetDrawScreen(DX_SCREEN_BACK);

	const int effectNum = 3;
	const int effectFramePerKoma = 5;
	int effect[effectNum];
	LoadDivGraph("slash_ice.png", effectNum, effectNum, 1, 82, 73, effect);
	int effectTime = 0;
	bool xFlag = false;

	while (ProcessMessage() == 0 && ClearDrawScreen() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) {

		if (CheckHitKey(KEY_INPUT_X) == 1) {
			if (!xFlag) effectTime = effectFramePerKoma * effectNum;
			xFlag = true;
		} else {
			xFlag = false;
		}
		if (effectTime > 0) {
			effectTime--;
			int effectIndex = effectNum - 1 - effectTime / effectFramePerKoma;
			if (effectIndex < 0 || effectIndex >= effectNum) effectIndex = 0; // 念のためガード
			DrawGraph(100, 100, effect[effectIndex], TRUE);
		}

		ScreenFlip();
	}

	DxLib_End();
	return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

放浪中
記事: 12
登録日時: 10年前

Re: 読み込んだエフェクトを順番に表示する方法

#3

投稿記事 by 放浪中 » 10年前

みけCATさん、お早い返答ありがとうございます!
教えていただいた方法で別のエフェクトも表示することができました。
自分でも理解するよう努力します。今回もありがとうございました!

閉鎖

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