Checking for a value overtime

Hey guys,
I am working on a simple health system but it turns out to be a little more complex as I started writing it.
I am looking for a way to decrease my player’s health over time UNLESS it makes score.
Now I have the score script done which simply increases the value of score by 1.

Now to make it work I will have to check if in the past 5 seconds player has done any score, if yes then ignore if not then decrease health by 10 then again repeat until it reaches 0 and game ends.

Any idea on how to implement this?
Can use

int delayTime = 5;
if(delatTime > 0)
  delayTime -= 1*Time.time;

I honestly don’t know weather to put it in update or make a new function and make the function called in update or how else to get this done. Basically I can’t figure out how to compare the two scores, one before 5 seconds and one currently. If they’re same - BAM. If not everything is happy.

Try with Invoke: Unity - Scripting API: MonoBehaviour.InvokeRepeating

InvokeRepeating("Decrease", 5, 5);

	void Decrease() {
		player.Health -= 10;

This method:
call invokerepeating - 5 sec - check is you did what you have to do - if not player health -=10 - if yes nothing happens - this repeats until you stop the invoke (Unity - Scripting API: MonoBehaviour.CancelInvoke).
I hope it helped.

Here is a simple solution, When player scores call Scored() method which starts the timer. The flag scoredLastFiveSeconds will remain true for the next 5 seconds, and than will be switched to false again. You can use this bool than to check whether to apply dmg or not in the method you have.


 bool scoredInLastFiveSeconds; //flag that check if player scored
    float scoreTimer;   //timer 

    void Scored()//when player scores call this method to init counter 
        scoredInLastFiveSeconds = true; //flag to true
        scoreTimer = 0f; //reset timer
    void Update()
        if (scoredInLastFiveSeconds) //count time only if player scored
            if (scoreTimer < 5f) //check if time below 5 secs 
                scoreTimer += Time.deltaTime; //update timer
                scoredInLastFiveSeconds = false; //after 10 secs set flag to false
        //use flag to apply dmg
        if (!scoredInLastFiveSeconds)  //here you check whether to apply dmg or not 
            ApplyDamage();  //apply damaga.....