Search code examples
c#unity-game-enginedelay

Checking condition and calling continuous method with periods of delay unity


I want code to check if target is alive, and if yes shoot at it. I want to check it all the time, and shoot all the time, The only problem is that checks can be made anytime u want, but shooting must have limits of fire per second. I mean u check the target all the time, but when u decide to shoot, bullets will fire one after another with some delays. And also when u realize that target is dead u stop shooting at the same time.

void Update()
{
   StartCoroutine(Shoot(currentTarget, 1f));
}

IEnumerator Shoot(Collider currentTarget, float delayTime)
{
    yield return new WaitForSeconds(delayTime);
    if (currentTarget != null)
    {
         .......
    }
}

This code starts to shoot but with no delays between shooting.


Solution

  • InvokeRepeating( "PossiblyShoot" , 1f, 1f );
    
    private void PossiblyShoot()
       {
       1. check if target still exists
       2. if it exists shoot at it
       }