VR速跑定时器



我正在制作一款VR竞速游戏,我需要一个计时器。计时器不需要在屏幕上呈现给玩家,只需要呈现在我所制作的地图上。它需要在玩家(VR)通过特定点时开始,并在到达不同点时结束。如果有人知道如何使这个工作,我将非常感激。

在起跑线上,你可以有一个空的游戏对象,上面有一个触发碰撞器,在OnTriggerEnter事件中,你可以启动一个记录时间的协程,在终点线上,你可以有另一个触发碰撞器,设置一个标志并停止计时器。

类似这样的代码应该可以工作:

using UnityEngine;
using System;
public class Player : MonoBehaviour {
private bool _isTimerStarted = false;
private float _timeElapsed = 0;

private void OnTriggerEnter(Collider other) {
if (other.gameObject.name.Equals("Start Line")) {
_isTimerStarted = true;
StartCoroutine(StartTimer());
} else if (other.gameObject.name.Equals("Finish Line") {
_isTimerStarted = false;
}
}
IEnumerator StartTimer() {
while (_isTimerStarted) {
_elapsedTime += Time.deltaTime;
yield return null;
}
yield break;
}
}

要做到这一点,只需确保你的玩家有一个附加的刚体,否则不会检测到碰撞:)

如果你想要一个"计时器"如"显示自某些事件以来经过的时间";你可以看看Stopwatch

var sw = Stopwatch.StartNew();
...
Console.WriteLine(sw.Elapsed.ToString());

秒表主要用于性能测量。但是它很容易使用,所以如果它适合你的用例,你也可以使用它,即使分辨率和精度比你需要的要高得多。

最新更新