private void OnTriggerEnter2D(Collider2D otherCollider) { AEnemy enemyScript = otherCollider.gameObject.GetComponent <AEnemy>(); // Check if the object is an enemy by looking for an enemy script if (enemyScript != null && !enemyScript.IsDead()) // If enemy isn't already dead, do damage { AudioManager.Instance.PlayOneShot("BoomerangHit"); enemyScript.TakeDamage(Player.BoomerangDamage); } Boomerang boomerangScript = otherCollider.gameObject.GetComponent <Boomerang>(); if ((boomerangScript != null) && (numExplosions > 0)) // If object is another boomerang { Vector2 vel = boomerangRb.velocity; float thisAngle = Mathf.Atan2(vel.y, vel.x) * Mathf.Rad2Deg; float otherAngle = Mathf.Atan2(otherCollider.GetComponent <Rigidbody2D>().velocity.y, otherCollider.GetComponent <Rigidbody2D>().velocity.x) * Mathf.Rad2Deg; if (Mathf.Abs(otherAngle - thisAngle) > minAngle) // Check that the angle between the two boomerangs' velocity is bigger than 10 { Vector2 offset = vel * (0.55f / vel.magnitude); // Offsetting it so that the explosion is at the intersection of the two boomerangs Instantiate(_player.boomerangExplosionEffect, this.transform.position + new Vector3(offset.x, offset.y, 0f), Quaternion.AngleAxis(thisAngle, Vector3.forward)); numExplosions -= 1; } } }
private void OnTriggerEnter2D(Collider2D otherCollider) { AEnemy enemyScript = otherCollider.gameObject.GetComponent <AEnemy>(); // Check if the object is an enemy by looking for an enemy script if (enemyScript != null && !enemyScript.IsDead()) // If enemy isn't already dead, do damage { enemyScript.TakeDamage(Player.BoomerangExplosionDamage); } }
private void LaunchAttack(Collider2D hitbox, int damageAmount) { Collider2D[] allColliders = Physics2D.OverlapBoxAll(hitbox.bounds.center, hitbox.bounds.size, 0); foreach (Collider2D collider in allColliders) { AEnemy enemyScript = collider.gameObject.GetComponent <AEnemy>(); // Check if the enemy script exists to confirm that this is an enemy's collider if (enemyScript != null && !enemyScript.IsDead()) // If enemy isn't already dead, do damage { _player.slashParticle.Play(); enemyScript.TakeDamage(damageAmount); } } }