Пример #1
0
    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);
    }
Пример #2
0
 void Start()
 {
     if (!gameObject.GetComponent <DestroyAfterSeconds>())
     {
         DestroyAfterSeconds DAS = gameObject.AddComponent <DestroyAfterSeconds>();
         DAS.Seconds = DestroyAfterSeconds;
     }
 }
Пример #3
0
    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();
    }
Пример #4
0
    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);
    }
Пример #6
0
    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));
    }