第02回 ゲームと時間
ゲームでは、時間に合わせてさまざまな処理を進める必要があります。
演出の開始タイミング、敵出現のタイミングなど、それぞれの処理は個別にタイムラインを持ち、時間に従って進行します。
今回はリズムゲームを題材に、ゲーム内での時間の扱い方を学びます。
完成見本では、曲に合わせて画面をノートが流れます。
このノートの表示とヒットのタイミングを、曲の再生時間に合わせて制御する仕組みを学びます。
今回の授業内容
- 時刻と時間の長さを区別し、秒・拍・Tickを換算する
- 曲の再生・ノートの表示・入力判定をひとつの時間軸で管理する
- 開始前の負の時刻、周期の位置、時計の精度と更新間隔を区別する
曲の再生時間に合わせてノートを発行し表示、適切なタイミングでの入力判定を行う仕組みを学びます。
音楽を扱うためには、時間の扱い方を正確に理解する必要があります。
この回では、配布済みの時計を読み、単位の換算と基準時刻との差を計算します。ノートの発行・移動・入力判定への利用は、第03回で扱います。
配布プロジェクト
第02回の開始用プロジェクトを展開し、Unity HubにRhythmGameを追加してください。
読み込み後にAssets/UNSLOW/RhythmGame/Scenes/RhythmGame.unityを開いてください。
開始版には8音の練習譜面、音源、時計、UI、再挑戦の補助処理が用意されています。ノートの発行・位置・入力判定の中心部分は未実装ですが、この回ではコードを変更せず、曲の時計とBeat・Tickの表示を確認します。動画は第03回まで進めた完成見本です。
スクリプトはAssets/UNSLOW/RhythmGame/Scripts/以下にまとめられています。
配布ファイル一覧
| ファイル・フォルダー | 役割 |
|---|---|
Assets/UNSLOW/RhythmGame/Scripts/SongClock.cs | 曲の再生を予約し、曲の時刻を返す |
Assets/UNSLOW/RhythmGame/Scripts/ChartSource.cs | 拍とTickで配置した練習譜面を用意する |
Assets/UNSLOW/RhythmGame/Scripts/NoteData.cs | Tickを判定時刻へ変換し、レーンと時刻を保持する |
Assets/UNSLOW/RhythmGame/Scripts/RhythmGame.cs | 開始、ノートの更新、判定、終了を進める |
Assets/UNSLOW/RhythmGame/Scripts/RhythmInput.cs | Input Actionから入力を受け取る |
Assets/UNSLOW/RhythmGame/Scripts/RhythmView.cs | 曲情報と判定結果を表示する |
Assets/UNSLOW/RhythmGame/Scripts/BeatTickView.cs | 拍と、その拍の中の現在位置を表示する |
Assets/UNSLOW/RhythmGame/Prefabs/ | レーン、ノート、Tickの表示部品 |
Assets/UNSLOW/RhythmGame/Input/RhythmGame.inputactions | 開始、再挑戦、4レーンの入力設定 |
Assets/ThirdParty/UDEVGothic/ | TMPのSDF Font Asset、元フォント、ライセンス |
Assets/ThirdParty/Audio/ | 音源と、その出典・利用条件 |
操作方法
レーン左からD、F、J、Kでヒットします。
SpaceまたはEnterで開始し、Rで最初からやり直します。
開始版でも曲の再生と再挑戦はできます。
ノートの発行・移動・入力判定は、第03回の実装済み開始版で確認します。
授業の進め方
時間と時計、秒と拍の関係から始めます。
その後、フレームと楽曲の進行を比べ、曲の開始点を基準にした時刻と、拍の中を繰り返す位置を扱います。
完成確認
- BPMとTick数から、1拍と1 Tickの秒数を計算できる。
- 画面の更新と音声の進行を区別し、時計を選ぶ理由を説明できる。
- 曲の開始前・開始時・開始後の時刻と、負の値の意味を説明できる。
- 剰余から拍の中の位置を求め、再生・表示・判定が共有する時間軸を説明できる。
次回は、今回の時間計算をノートの表示と入力判定へ使い、CSVで譜面を作ります。
ライセンス
| アセット | 作者 | 提供元 | ライセンス |
|---|---|---|---|
| Synthwave House Loopの添付ループ音源 | Fupi | OpenGameArt | CC0 1.0 Universal |
| UDEV Gothic v2.2.0と、元フォントから生成したSDF Font Asset | yuru7 | UDEV Gothic | SIL Open Font License 1.1 |
音源の記録はAssets/ThirdParty/Audio/LICENSES.md、フォントの出典・著作権表示・ライセンス文書はAssets/ThirdParty/UDEVGothic/に同梱されています。