Example #1
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (!active)
        {
            return;
        }

        BaseController victim = collision.gameObject.GetComponent <BaseController>();

        if (!victim || owner.IsTeammate(victim))
        {
            return;
        }

        victim.TakeDamage(damage, owner, transform.position);
        victim.ApplyCollisionForce(transform.position, force, force);

        active = false;

        GetComponent <SpriteRenderer>().enabled = false;
        bodyCollider.enabled = false;

        ParticleSystem particles = GetComponent <ParticleSystem>();

        particles.Play();

        Destroy(gameObject, 1f);
    }
Example #2
0
    protected override void OnProjectileHit
        (ProjectileHandler projectile, Collider2D collision)
    {
        if (projectile.IsSameSender(collision.gameObject))
        {
            return;
        }

        BaseController victim = collision.gameObject
                                .GetComponent <BaseController>();

        if (!victim || victim.IsTeammate(projectile.Sender))
        {
            return;
        }

        projectile.Sender.perks.Activate <IProjectileHitTarget>(1,
                                                                perk => perk.OnHit(projectile, victim));

        float damage = Math.Min(projectile.damage,
                                (projectile.Rigidbody.velocity.magnitude
                                 + victim.body.Body.velocity.magnitude));

        victim.ProcessDamage(damage, projectile.Sender,
                             projectile.transform.position);

        float push = (damage * projectile.force) / 8;

        victim.ApplyCollisionForce(projectile.transform.position, push / 2, push);
    }