public void Explode() { Collider[] colliders = Physics.OverlapSphere(transform.position, blastRadius); foreach (Collider nearbyObject in colliders) { Rigidbody rb = nearbyObject.GetComponent <Rigidbody>(); RagdollRig ragdollRig = nearbyObject.GetComponent <RagdollRig>(); if (rb != null) { //if (ragdollRig != null) //ragdollRig.DoConcussion(); rb.AddExplosionForce(blastForce, transform.position, blastRadius, upwardsModifier, ForceMode.VelocityChange); //Play Explosion SFX } } foreach (Collider nearbyObject in colliders) { if (nearbyObject.CompareTag("Player")) { Debug.Log("FOUND IT!!"); nearbyObject.GetComponentInParent <StatusHelper>().pc.Hurt(explosionDamage); } break; } Destroy(Instantiate(effect, transform.position, Quaternion.identity), 3); Destroy(this.gameObject, 0); }
public StatusEffect(Effects.Type _myType, int _ticks, float _power, PlayerController _pc, RagdollRig _rr) { pc = _pc; rr = _rr; myType = _myType; myPower = _power; myTicks = _ticks; }
private void Awake() { if (GetComponent <PlayerController>() != null) { pc = GetComponent <PlayerController>(); } if (GetComponent <PlayerController>() != null) { rr = GetComponent <RagdollRig>(); } }
private IEnumerator Expload(float delay = 0f) { if (delay != 0) { yield return(new WaitForSeconds(delay)); } //Change scale if (changeScale) { float i = 0f; while (i < timeToScale) { i += Time.deltaTime; transform.localScale = Vector3.Lerp(startScale, endScale, i / timeToScale); yield return(null); } } if (explosionEffect != null) { Destroy(Instantiate(explosionEffect, transform.position, Quaternion.identity), 3); } Collider[] colliders = Physics.OverlapSphere(transform.position, blastRadius); foreach (Collider nearbyObject in colliders) { Rigidbody rb = nearbyObject.GetComponent <Rigidbody>(); RagdollRig ragdollRig = nearbyObject.GetComponent <RagdollRig>(); if (rb != null) { //if (ragdollRig != null) //ragdollRig.DoConcussion(); rb.AddExplosionForce(blastForce, transform.position, blastRadius, upwardsModifier, ForceMode.VelocityChange); //Play Explosion SFX } } if (destroyAfterExplosion) { Destroy(gameObject); } }