Ejemplo n.º 1
0
    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);
    }