Skip to content
第02回 音ゲーム1

2 / 4 入力と判定時刻を比較する

このステップの目的

入力時刻とノーツの判定時刻との差から、判定ランクを決める

判定幅を定数にする

csharp
double delta = inputTime - note.hitTime;
double error = Math.Abs(delta);

Judgement result = error <= perfectWindow ? Judgement.Perfect
    : error <= goodWindow ? Judgement.Good
    : error <= missWindow ? Judgement.Bad
    : Judgement.Miss;

判定幅はコードの各所へ散らさず、ゲーム調整値としてまとめます。値を変えた比較ができることが重要です。

一番近いノーツを選ぶ

同じレーンに複数のノーツがある場合は、判定時刻が最も近い未処理ノーツだけを候補にします。

チェックリスト
  • 入力時刻と判定時刻の差を求めている
  • Perfect、Good、Missの幅を調整値にしている
  • 同じノーツを二度判定していない