C++ Siv3dで立体的な音ゲー作りたいね。

このエントリーをはてなブックマークに追加このエントリのはてなブックマーク数このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをつぶやく

発音のラグを減らしたい、これだとFPSが下がってしまうのが原因なのかなぁ?

# include <Siv3D.hpp>

double pickMod(double a){
	return (a - (int)a);
}

bool boolFlip(bool a){
	return !a;
}

void Main()
{

	/*
	60FPSで動作するので、60F/sec = 3600F/min

	デバッグモード表示はShift+Dで切り替え

	*/

	//譜面クラスに書く内容
	int frameCount = 0; //フレームカウント
	double recordFrameCount[5] = { 0, 0, 0, 0, 0 }; //フレームカウント位置記録
	const int startMusicFrameCount = 285; //音源gap
	const int bpm = 144;

	const Font font(16); //デバッグ表示用
	const Sound sound(L"Music/ビーネイトエルフ.mp3");
	if (!sound){ return; };

	const double fpb = 3600 / bpm; //frame per minitue
	frameCount = -1 * startMusicFrameCount;

	int i = 0;

	bool isDebugMode = false;

	sound.play();
	while (System::Update()) {

		frameCount++;

		if ((Input::KeyShift + Input::KeyD).clicked){
			isDebugMode = boolFlip(isDebugMode);
		}

		if (isDebugMode){

			font.draw(Format(L"F.count:", frameCount, L" | B.count:", (frameCount / fpb), L"(fpb:", fpb, L")"));

			if (pickMod(frameCount / fpb) <= 0.1){
				font(L"*").draw(0, 30);
			}
			else{
				font(L"-").draw(0, 30);
			}

			font(pickMod(recordFrameCount[0])).draw(0, 60);
			font(pickMod(recordFrameCount[1])).draw(0, 90);
			font(pickMod(recordFrameCount[2])).draw(0, 120);
			font(pickMod(recordFrameCount[3])).draw(0, 150);
			font(pickMod(recordFrameCount[4])).draw(0, 180);

			if (Input::KeyK.clicked){
				recordFrameCount[i % 5] = (frameCount / fpb);
				i++;
			}

			if (Input::KeySpace.clicked){
				exit(0);
			}

		}//debugmode

		if (Input::KeyK.clicked){
			if (pickMod(frameCount / fpb) <= 0.02 || pickMod(frameCount / fpb) >= 0.98){
				//Just判定
				font(L"JUST").draw(0, 0);
			}
			else if (pickMod(frameCount / fpb) <= 0.1 || pickMod(frameCount / fpb) >= 0.9){
				//Great判定
				font(L"Great").draw(0, 0);
			}
			else if (pickMod(frameCount / fpb) <= 0.2 || pickMod(frameCount / fpb) >= 0.8){
				//Good判定
				font(L"Good").draw(0, 0);
			}
			else{
				//miss判定
				font(L"miss").draw(0, 0);
			}
		}

	}//Updateループ

}

Posted by at 2014/10/18 16:10

よく投稿されているコード

タグ

最近投稿されたコード