I have an enemy who in the update fires projectiles at the player if in range every X seconds however he never waits between shots. I’ve checked with the print statements that the projectile is fired multiple times before the WaitForSeconds
happens. Can someone explain what I’ve done wrong.
if (distanceToPlayer <= attackRange)
{
aiCharControl.agent.isStopped = true;
anim.SetFloat("BlendY", 0);
//Fire or Attack
StartCoroutine(FireProjectile(target));
}
private IEnumerator FireProjectile(Transform target)
{
GameObject projectile = Instantiate(projectileToUse, projectileSpawnPoint.position, Quaternion.identity) as GameObject;
Projectile projComponent = projectile.GetComponent<Projectile>();
float projSpeed = projComponent.Speed;
Vector3 distanceToPlayer = (target.transform.position - projectileSpawnPoint.transform.position).normalized;
projectile.GetComponent<Rigidbody>().velocity = distanceToPlayer * projSpeed;
projectile.transform.LookAt(target);
projComponent.Damage = projectileDamage;
print(Time.time + " Before wait");
yield return new WaitForSeconds(timeBetweenShots);
print(Time.time + " After wait");
}