コンテンツにスキップ

時間管理

ITimeProvider は、フレーム時間・FPS・タイムスケールなどの時間に関する情報を管理するインターフェースです。シーン内では Time プロパティを通じてアクセスします。

public class MyScene : Scene
{
public override void OnUpdate()
{
var dt = Time.DeltaTime;
// dt を使った位置の更新など
x += speed * dt;
}
}
// 前フレームからの経過時間(秒)。フレームレートに依存しない移動量の計算に使用する
float dt = Time.DeltaTime;
// ゲーム開始からの累積時間(秒)
float total = Time.TotalTime;
// 現在のFPS
long fps = Time.FramePerSeconds;
// FPS目標値の設定(0で無制限)
Time.TargetFps = 60;

TimeScale を変更することで、ゲーム全体の時間の流れを変化させられます。DeltaTime と TotalTime の値に影響します。

Time.TimeScale = 1.0f; // 通常速度(デフォルト)
Time.TimeScale = 0.5f; // スローモーション(半分の速度)
Time.TimeScale = 2.0f; // 早送り(2倍速)
Time.TimeScale = 0.0f; // 一時停止
public class PlayerScene(Keyboard keyboard) : Scene
{
private Vector _position;
private const float Speed = 200f; // ピクセル/秒
public override void OnUpdate()
{
var dt = Time.DeltaTime;
if (keyboard.Right.IsPressed) _position.X += Speed * dt;
if (keyboard.Left.IsPressed) _position.X -= Speed * dt;
if (keyboard.Down.IsPressed) _position.Y += Speed * dt;
if (keyboard.Up.IsPressed) _position.Y -= Speed * dt;
}
}
public class GameScene(Keyboard keyboard) : Scene
{
public override void OnUpdate()
{
if (keyboard.P.IsKeyDown)
{
// TimeScaleを0にしてゲームを一時停止
Time.TimeScale = Time.TimeScale == 0f ? 1f : 0f;
}
}
}