時間管理
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;
// 現在のFPSlong fps = Time.FramePerSeconds;フレームレート制御
Section titled “フレームレート制御”// FPS目標値の設定(0で無制限)Time.TargetFps = 60;タイムスケール
Section titled “タイムスケール”TimeScale を変更することで、ゲーム全体の時間の流れを変化させられます。DeltaTime と TotalTime の値に影響します。
Time.TimeScale = 1.0f; // 通常速度(デフォルト)Time.TimeScale = 0.5f; // スローモーション(半分の速度)Time.TimeScale = 2.0f; // 早送り(2倍速)Time.TimeScale = 0.0f; // 一時停止フレームレート非依存の移動
Section titled “フレームレート非依存の移動”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; } }}- ゲームビュー - ウィンドウの表示・サイズ管理
- PrometeApp - アプリケーションの初期化