誰かが私を助けてくれると思っていたタイマーに問題があります。私は多くのゴーグル検索を行ってきましたが、メインの 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");
}