private void OnTriggerEnter2D(Collider2D collider)
    {
        TeamAssigner         teamAssigner = collider.GetComponent <TeamAssigner>();
        ProjectileController projectile   = collider.GetComponent <ProjectileController>();

        if (projectile != null)
        {
            if (projectile.firingTeam != firingTeam)
            {
                Destroy(projectile.gameObject);
                Destroy(gameObject);
                return;
            }
        }

        if (collider.isTrigger || teamAssigner != null && firingTeam == teamAssigner.team)
        {
            return;
        }
        else
        {
            HealthTracker healthTracker = collider.GetComponent <HealthTracker>();
            if (healthTracker != null)
            {
                healthTracker.TakeDamage(weaponInfo.damage);
            }
            Destroy(gameObject);
        }
    }
Exemple #2
0
    public void UseWeapon()
    {
        if (currentWeapon == null || isOnCooldown)
        {
            return;
        }

        OnUseWeapon.Invoke();

        CharacterTeamAssigner myTeam = GetComponent <CharacterTeamAssigner>();

        foreach (Collider2D collider in GetCollidersInWeaponRange())
        {
            HealthTracker tracker = collider.GetComponentInParent <HealthTracker>();
            if (tracker != null)
            {
                CharacterTeamAssigner otherTeam = collider.GetComponentInParent <CharacterTeamAssigner>();
                if (otherTeam == null || myTeam == null || myTeam.team != otherTeam.team)
                {
                    tracker.TakeDamage(currentWeapon.damage);

                    Rigidbody2D rb = collider.GetComponentInParent <Rigidbody2D>();
                    if (rb != null)
                    {
                        rb.AddForce((rb.position - (Vector2)transform.position).normalized * currentWeapon.force, ForceMode2D.Impulse);
                    }
                }
            }
        }

        StartCoroutine(WaitForCooldown(currentWeapon.cooldown));
    }
Exemple #3
0
    private void OnCollisionStay2D(Collision2D collision)
    {
        TeamAssigner otherTeamAssigner = collision.collider.GetComponent <TeamAssigner>();

        if (otherTeamAssigner != null && otherTeamAssigner.team != assigner.team)
        {
            HealthTracker healthTracker = collision.collider.GetComponent <HealthTracker>();
            if (healthTracker != null)
            {
                healthTracker.TakeDamage(damage);
            }
        }
    }