ページ 11

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

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

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

Posted: 2015年3月28日(土) 22:05
by みけCAT
エフェクト表示の残り時間によって表示する画像を切り替えるといいと思います。

コード:

#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;
}

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

Posted: 2015年3月28日(土) 22:30
by 放浪中
みけCATさん、お早い返答ありがとうございます!
教えていただいた方法で別のエフェクトも表示することができました。
自分でも理解するよう努力します。今回もありがとうございました!