1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

今回はunityやゲーム開発で使用されるdeltaTimeをC++の標準ライブラリのみで実装する方法を紹介したいと思います。

deltaTimeとは

直前のフレームから現在のフレームまでに経過した時間を表すもののことです。
ゲーム開発ではdeltaTimeに厳密に時間を計ることで、フレームレートに左右されない実装を行うことが可能になります。

実装方法

C++では<chrono>をincludeすることでdeltaTimeの実装が可能になります。

deltaTime1.cpp
#include <iostream>
#include <chrono>

int main() {
	// 初期化
	auto previousTime = std::chrono::high_resolution_clock::now();

	while (true) { // ゲームやアプリケーションのメインループ
		// 現在の時間を取得
		auto currentTime = std::chrono::high_resolution_clock::now();
		// デルタタイムを計算 (ミリ秒単位に変換)
		auto deltaTime = std::chrono::duration_cast<std::chrono::milliseconds>(currentTime - previousTime).count();
		// 現在の時間を次のループの基準時間に更新
		previousTime = currentTime;
		// デルタタイムを利用して処理を行う
		std::cout << "deltaTime: " << deltaTime << " ms" << std::endl;
	}

	system("pause");
	return 0;
}

std::chrono::high_resolution_clock::now()は、現在の時刻を取得する関数です。
以上のコードは、コンソール上で毎ループdeltaTimeを出力するだけのコードですが、この方法でdeltaTimeでのタイマーを実装できることが分かると思います。
今度はカウント用変数に毎秒足していくことでタイマー実装を実現しましょう。

deltaTime2.cpp
#include <iostream>
#include <chrono>

float timer_count = 0.0f; // タイマーのカウント変数

int main() {
	// 初期化
	auto previousTime = std::chrono::high_resolution_clock::now();

	while (true) { // ゲームやアプリケーションのメインループ
		// 現在の時間を取得
		auto currentTime = std::chrono::high_resolution_clock::now();
		// デルタタイムを計算 (ミリ秒単位に変換)
		auto deltaTime = currentTime - previousTime;
		// 現在の時間を次のループの基準時間に更新
		previousTime = currentTime;
		//デルタタイムをタイマーに加算
		timer_count += std::chrono::duration<float>(deltaTime).count();
		// デルタタイムを利用して処理を行う
		std::cout << "経過秒数" << timer_count << std::endl;
	}

	system("pause");
	return 0;
}

以上のコードも、コンソール上で出力をループするソースコードですが、実行すると経過時間をfloatで扱えることが分かると思います。

総括

  • ゲーム開発などではdeltaTimeに厳密に時間を計ることで、フレームレートに左右されない実装を行うことが可能にな
  • C++では<chrono>をincludeすることで標準ライブラリのみでdeltaTimeの実装が可能になる。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?