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); } }
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)); }
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); } } }