0

我的计时器有问题,我想知道有人可以帮助我。我已经完成了很多 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");
}
4

1 回答 1

0

您还没有发布任何计算您查看某个项目的时间的内容,所以我不确定我们在问题中缺少什么代码。

也就是说,我怀疑问题是你start_time总是为零(或接近零 - 它最初将设置Start为调用你的方法的时间,如果它立即处于活动状态,它将接近零)。

如果您start_time = Time.timeResetTimer方法中设置,那么您可以计算出您查看对象的Time.time - start_time时间 - 这应该是您正在寻找的。

于 2013-10-23T13:59:53.480 回答