void Explode() { if (!started) { return; } GameObject.Destroy(GetComponent <Rigidbody2D>()); ExplosionSprite.SetActive(true); Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, explosionRadius); for (int i = 0; i < colliders.GetLength(0); i++) { PlayerHit hit = colliders[i].gameObject.GetComponent <PlayerHit>(); if (hit == null) { continue; } if (hit.gameObject == owner) { continue; } if (colliders[i] is BoxCollider2D == false) { continue; } hit.OnDeath(owner); } ExplosionSprite.transform.parent = null; ExplosionSprite.transform.rotation = Quaternion.identity; DestroyAfterSeconds DAS = ExplosionSprite.AddComponent <DestroyAfterSeconds>(); DAS.Seconds = 0.5f; GameObject.Destroy(gameObject); }
void Start() { if (!gameObject.GetComponent <DestroyAfterSeconds>()) { DestroyAfterSeconds DAS = gameObject.AddComponent <DestroyAfterSeconds>(); DAS.Seconds = DestroyAfterSeconds; } }
public void _PlayAudioAtLocation(string name, Vector3 worldSpacePosition) { AudioClip clip = GetAudioClip(name); AudioSource instantiatedSource = Instantiate(defaultSource, worldSpacePosition, Quaternion.identity).GetComponent <AudioSource>(); DestroyAfterSeconds autoDestroyer = instantiatedSource.gameObject.AddComponent <DestroyAfterSeconds>(); autoDestroyer.WaitAndDestroy(clip.length + 0.5f); instantiatedSource.clip = clip; instantiatedSource.Play(); }
public void SetDestroyDuration(float time) { this._destroyDuration = time; DestroyAfterSeconds destroyAfterSeconds = this.GetComponent <DestroyAfterSeconds>(); if (destroyAfterSeconds != null) { destroyAfterSeconds.duration = time; } }
/// <summary> /// Performs any required cleanup, like unparenting particle effects, before destroying the projectile. /// Override in subclass if additional cleanup is required there, but make sure to call base at the end. /// </summary> protected virtual void CleanupAndDestroy() { foreach (UnparentOnDestroyEffect unparentEffect in _unparentOnDestroyEffects) { // Unparent effect and destroy after specified time. unparentEffect.effect.transform.parent = null; DestroyAfterSeconds effectDestroyScript = unparentEffect.effect.AddComponent <DestroyAfterSeconds>(); effectDestroyScript.destroyDelay = unparentEffect.destroyDelay; } // All cleanup handled, so we can safely destroy. Destroy(gameObject); }
protected override void Activate() { GameObject ExplosionSprite = new GameObject("bombsuit explosion"); ExplosionSprite.AddComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("PowerUps/Powers/BombSuit/Explosion"); ExplosionSprite.transform.position = owner.transform.position; Collider2D[] colliders = Physics2D.OverlapCircleAll(owner.transform.position, explosionRadius); for (int i = 0; i < colliders.GetLength(0); i++) { PlayerHit hit = colliders[i].gameObject.GetComponent <PlayerHit>(); if (hit == null) { continue; } if (hit.gameObject == owner) { continue; } if (colliders[i] is BoxCollider2D == false) { continue; } hit.OnDeath(owner); } ExplosionSprite.transform.parent = null; ExplosionSprite.transform.rotation = Quaternion.identity; DestroyAfterSeconds DAS = ExplosionSprite.AddComponent <DestroyAfterSeconds>(); DAS.Seconds = 0.5f; ScoreManager.gameData.BombSuitUsed++; PowerupUser PU = owner.GetComponent <PowerupUser>(); PU.EndPowerup(); PU.SetPowerup(new EmptyPowerup(owner)); }