void Explosion() { List <Collider> enemies = Physics.OverlapSphere(transform.position, radius).ToList(); for (int i = 0; i < enemies.Count; i++) { if (!enemies[i].GetComponent <Competitor>() || enemies[i].transform == transform) { enemies.Remove(enemies[i]); i--; } } //explosion.StartExplosion(duration, Vector3.zero, "PE_GoalExplosion", explosionYOffset); explosion.StartExplosion(duration, Vector3.zero, "PE_BlastOut"); explosion.StartExplosion(duration, Vector3.zero, "PE_BlastOut"); if (enemies.Count == 0) { return; } else { foreach (Collider enemy in enemies) { var rb = enemy.GetComponent <Rigidbody>(); var competitor = enemy.GetComponent <Competitor>(); if (enemy.tag == "Player") { if (goal != true) { rb.AddExplosionForce(playerPower, explodePosition, radius, playerUpwardForce, ForceMode.Impulse); } } else { if (enemy.GetComponent <Competitor>().name != goalName) { competitor.navMeshOff = true; competitor.GetComponent <AIStateMachine>().enabled = false; rb.AddExplosionForce(power, explodePosition, radius, upwardForce, ForceMode.Impulse); competitor.Blast(competitor.transform, duration); } } } } }
public override void ActivatePowerUp(string name, Transform origin) { base.ActivatePowerUp(name, origin); List <Collider> enemies = Physics.OverlapSphere(origin.position, radius).ToList(); for (int i = 0; i < enemies.Count; i++) { if (!enemies[i].GetComponent <Competitor>() || enemies[i].transform == origin) { enemies.Remove(enemies[i]); i--; } } explodingObject.transform.position = origin.position; ExplosionEffect effect = explodingObject.GetComponent <ExplosionEffect>(); if (effect == null) { effect = explodingObject.AddComponent <ExplosionEffect>(); } effect.StartExplosion(duration, Vector3.zero); if (enemies.Count == 0) { return; } else { foreach (Collider enemy in enemies) { var rb = enemy.GetComponent <Rigidbody>(); var competitor = enemy.GetComponent <Competitor>(); if (!competitor.untouchable) { if (enemy.tag == "Player") { rb.AddExplosionForce(playerPower, origin.position, radius, playerUpwardForce, ForceMode.Impulse); } else { competitor.navMeshOff = true; competitor.GetComponent <AIStateMachine>().enabled = false; rb.AddExplosionForce(power, origin.position, radius, upwardForce, ForceMode.Impulse); competitor.Blast(competitor.transform, 1.0f); } } } } }
void Explosion() { List <Collider> enemies = Physics.OverlapSphere(this.gameObject.transform.position, PUE.DM_radius).ToList(); for (int i = 0; i < enemies.Count; i++) { if (!enemies[i].GetComponent <Competitor>() || enemies[i].transform == this.gameObject.transform) { enemies.Remove(enemies[i]); i--; } } explodingObject.transform.position = transform.position; ExplosionEffect effect = explodingObject.GetComponent <ExplosionEffect>(); if (effect == null) { effect = explodingObject.AddComponent <ExplosionEffect>(); } effect.StartExplosion(duration, Vector3.zero); if (enemies.Count == 0) { return; } else { foreach (Collider enemy in enemies) { var rb = enemy.GetComponent <Rigidbody>(); var competitor = enemy.GetComponent <Competitor>(); if (!competitor.untouchable) { if (enemy.tag == "Player") { rb.AddExplosionForce(PUE.DM_playerPower, transform.position, PUE.DM_radius, PUE.DM_playerUpwardForce, ForceMode.Impulse); Destroy(transform.parent.gameObject); } else { competitor.navMeshOff = true; competitor.GetComponent <AIStateMachine>().enabled = false; rb.AddExplosionForce(PUE.DM_power, transform.position, PUE.DM_radius, PUE.DM_upwardForce, ForceMode.Impulse); Destroy(transform.parent.gameObject); competitor.Blast(competitor.transform, duration); } } } } }