public bool EjectPart(CombotPart part) { if (part == null) { return(false); } Instantiate( gameManager.GetPrefab("Explosion"), part.transform.position, part.transform.rotation, part.transform.parent ); Instantiate( gameManager.GetPrefab("Explosion"), part.transform.position, part.transform.rotation, part.transform ); part.transform.SetParent(null); Rigidbody[] rbs = part.transform.GetComponentsInChildren <Rigidbody>(); foreach (Rigidbody rb in rbs) { rb.useGravity = true; rb.isKinematic = false; } Destroy(part.GetComponent <CharacterJoint>()); part.GetComponent <Rigidbody>().AddForce(Vector3.up * 10, ForceMode.Acceleration); if (part.PartType == CombotPart.Type.Legs || part.PartType == CombotPart.Type.Head) { unitControl.Die(Vector3.zero); } animator.Rebind(); return(true); }
void Explode() { Collider[] nearbyObjects = Physics.OverlapSphere(transform.position, blastRadius); foreach (Collider thing in nearbyObjects) { UnitControl enemyInRange = thing.GetComponent <UnitControl>(); if (enemyInRange && !enemyInRange.IsDead()) { if (Vector3.Distance(transform.position, enemyInRange.transform.position) < blastRadius * 0.25f) { enemyInRange.Die(true); } else { enemyInRange.Knockback(transform.position, damage); } } } GameObject effect = Instantiate(explosionEffect, transform.position, Quaternion.identity) as GameObject; effect.gameObject.AddComponent <ParticleKiller>(); Destroy(gameObject); }