private IEnumerator LoopMulti() { while (true) { Vector2 direction = (target.transform.position - this.transform.position).normalized; MultiProjectile multiProjectile = multiProjectilePool.Allocate(); multiProjectile.transform.position = this.transform.position; multiProjectile.Init(multiProjectileModel); multiProjectile.OnBlowUp += MultiProjectile_OnBlowUp; multiProjectile.gameObject.SetActive(true); multiProjectile.Force(direction); yield return(new WaitForSeconds(fireRate)); } }
private void MultiProjectile_OnBlowUp(List <ProjectileModel> projetileModels, MultiProjectile multiProjectile) { multiProjectile.OnBlowUp -= MultiProjectile_OnBlowUp; multiProjectilePool.Release(multiProjectile); foreach (ProjectileModel model in projetileModels) { Projectile projectile = projectilePool.Allocate(); projectile.transform.position = multiProjectile.transform.position; projectile.Init(model); projectile.OnBlowUp += Projectile_OnBlowUp; projectile.gameObject.SetActive(true); projectile.Force(model.Direction); } }