Menu
CoddyTech

タイムトライアル

CoddyのUnityジャーニー「本格的なゲームを作る」セクションの一部。レッスン 55/56。

庭園を横断するタイムトライアルです。ランナーは残り時間が10秒の状態で一方の端からスタートし、生け垣を回り込んで、時間切れになる前に反対側の端にある白いゴールに到達する必要があります。途中にある金色の時計を取ると、それぞれ残り時間が数秒増えます。残り時間がほとんどなくなると時計が赤くなり、時間切れになるとコースが最初からやり直しになります。時間内にゴールに到達すると、ゲームはFinishシーンに進みます。

2つのスクリプトを書きます。ランナー(CharacterController)にはRunnerを、RaceオブジェクトにはRaceを設定します。

challenge icon

チャレンジ

難しい

ビルドには、TrackとFinishの2つのシーンがあります。トラック上では、時計にClock、ゴールにGoalのタグが付いており、どちらもトリガーです。

InspectorでRunnerにspeed(6)、gravity(-9.81)、race(Raceスクリプト)を設定します。

  • プロジェクトのMoveアクションにより、ランナーは1秒あたりspeedユニットの速さで走ります。右と左はx軸に沿って、上と下はz軸に沿って移動します。gravityによって落下し、移動にはcontroller.Moveだけを使うため、生け垣にぶつかると止まります。
  • 時計にぶつかると、それを取得してレースにボーナスが加算されます。ゴールにぶつかるとレースが終了します。

InspectorでRaceにtimeLimit(10)、bonus(3)、timeTextを設定します。

  • 残り時間はtimeLimitから始まり、実際に経過した時間に応じて減っていきます。timeTextには小数点以下1桁でTime: 7.4のように表示され、残り時間が3秒未満になると白から赤(Color.red)に変わります。
  • 時計を取るたびにbonus秒が加算されます。
  • 時間が0になると、Time's up!をログに出力し、トラックを最初から再読み込みします。
  • 時間内にレースを終えると、残り時間をFinished with 4.2 s leftのようにログに出力し、Finishシーンを読み込みます。

Playを押して時計に勝ったら、Checkを押してください。

自分で試してみよう

using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;

public class Race : MonoBehaviour
{
    public float timeLimit = 10f;
    public float bonus = 3f;
    public TMP_Text timeText;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

本格的なゲームを作るのすべてのレッスン