我的计时器有些问题我想知道有人可以帮助我。我做了很多Goggle搜索,但主要的Unity答案网站已经为我完成了。
我试图设置一个计时器,一旦用光线击中物体,就开始计数到10。当我不再用光线击中物体时,我希望计时器停止计数。如果我再次击中同一个物体,我希望定时器从头开始。
我目前所拥有的只是一个计时器,只有在我看到一个物体时才会开始。当我看向外面并且时间已经达到3秒时,这将显示在我的检查器字段中。但是,当我回头看同一个物体的时候,时间会跳到我看的那段时间,而不是看着物体。
有人可以看看我的逻辑,看看我是否遗漏了什么?
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");
}
答案 0 :(得分:0)
您尚未发布任何计算您查看某个项目的时间的内容,因此我不确定我们在问题中缺少哪些代码。
那就是说,我怀疑问题是你的start_time
始终为零(或接近零 - 它最初会被设置为调用Start
方法的时间,这将近如果它立即生效,则为零。
如果您在start_time = Time.time
方法中设置ResetTimer
,那么您可以使用Time.time - start_time
计算您查看对象的时长 - 这应该是您正在寻找的内容