protected ProjectileHandler SpawnProjectile( BaseController sender, Vector2 direction, WeaponStats stats, float damage, float statsMod = 1) { GameObject projectile = Instantiate(projectilPrefab, GameModes.GetDebrisTransform(sender.team)); projectile.name = $"{gameObject.name}_Projectile"; projectile.transform.position = (Vector2)transform.position + direction; ProjectileHandler handler = projectile .GetComponent <ProjectileHandler>(); handler.onUpdate = OnProjectileUpdate; handler.onHit = OnProjectileHit; Collider2D collider = handler.body .GetComponent <Collider2D>(); Physics2D.IgnoreCollision(collider, sender.body.Collider); handler.SetStats(sender, damage * statsMod, (life + stats.life) / statsMod, ((speed + stats.speed) / statsMod) * direction.normalized, ((force + stats.force) / 4) * statsMod); sender.perks.Activate <IProjectileFired>(1, perk => perk.OnFire(handler)); return(handler); }