【Unity】【OculusQuest】制限時間を表示する

f:id:s44511173:20191009165429g:plain

制限時間のカウントダウンを、イライラ棒の先端に表示してみました。
数字表示と共に時間ゲージの円が欠けていく仕組みになっています。

開発環境

イライラ棒Canvasを追加する

f:id:s44511173:20191009170442p:plain

Render ModeはWorld Spaceに設定しましょう。
Event CameraにはOVRCameraRig > TrackingSpace > CenterEyeAnchorを設定します。

カウントダウン用のTextをCanvasに追加する

アウトラインをつけたかったのでTextMeshProにしましたが、普通のTextでもOKです。

時間ゲージ用のImageをCanvasに追加する

f:id:s44511173:20191009171415p:plain

時間ゲージ用の画像を準備します。
インスペクタでTexture TypeをSpriteに設定しておきましょう。
これをImageのSourceに設定します。

 

f:id:s44511173:20191009171856p:plain

そうすると、Imageのインスペクタ上にImage Typeという項目が出てきます。
こいつをFilledに、Fill MethodをRadial360に設定してやります。
これで円が欠けていく時間ゲージが実現できます!
上から欠けていきたいのでFill OriginをTopに、満円からスタートしたいのでFill Amountは1にしましょう。

スクリプトからゲージ値を設定する

あとはこんな感じのスクリプトを書けばOK!

[SerializeField]
private TextMeshProUGUI time; //インスペクタからセット
[SerializeField]
private Image timebar; //インスペクタからセット
private int timelimit = 30; //ステージ毎に値を変える
private bool run = true; //ゲームオーバーになったらfalse

public async void Countdown() {
    while (timelimit > 0) {
        await Task.Delay(1000);
        timelimit--;
        if (run) {
            time.text = string.Format("TIME:{0:00}", timelimit);
            timebar.fillAmount -= timediff; //時間ゲージの満ち欠けを設定
        }
    }

    if(timelimit == 0) {
        run = false;
        GameOver();
    }
}

 これでイライラ棒の先端に制限時間を表示できるようになりました!

 

 

 

↑↑↑ ぜひ遊んでみてください!↑↑↑