我的计时器有问题,我想知道有人可以帮助我。我已经完成了很多 Goggle 搜索,但主要的 Unity 回答网站已经为我完成了。
我试图设置一个计时器,一旦我用射线击中一个物体,就开始计数到 10。当我不再用射线击中对象时,我希望计时器停止计数。如果我再次击中同一个物体,我希望计时器从头开始重新启动。
我现在拥有的是一个计时器,它只在我看一个物体时才开始。当我移开视线并且时间已到 3 秒时,这将显示在我的 Inspector 字段中。但是,当我回头看同一个物体时,时间会跳到我看和不看物体之间的时间。
有人可以看看我的逻辑,看看我是否遗漏了什么?
void Start()
{
start_time = Time.deltaTime;
running_time = 0;
}
void Update ()
{
bool updateTimer = (track_timer && lastHitObject != null);
Check(updateTimer);
}
// check to see which object my ray has hit
void HighLight(GameObject nextHitObject)
{
// Case1: Last ray and new ray both hit objects
if(lastHitObject != null && nextHitObject != null){
//1a: same objects, do nothing
if(lastHitObject.tag == nextHitObject.tag)return;
{ //1b: different objects, swap highlight texture
lastHitObject.renderer.material = oldMat;
lastHitObject = nextHitObject;
oldMat = lastHitObject.renderer.material;
lastHitObject.renderer.material = highlight_material;
track_timer = true;
return;
}
}
// Case2: Last ray hit nothing, new ray hit object.
if(lastHitObject == null && nextHitObject != null){
ResetTimer();
lastHitObject = nextHitObject;
oldMat = lastHitObject.renderer.material;
lastHitObject.renderer.material = highlight_material;
track_timer = true;
return;
}
// Case3: Last ray hit something, new ray hit nothing
if(lastHitObject != null && nextHitObject == null){
lastHitObject.renderer.material = oldMat;
lastHitObject = null;
track_timer = false;
return;
}
}
void ResetTimer()
{
start_time = 0;
running_time = 0f;
//Debug.Log("resetting timer");
}