public void MakeExplosion(Vector3 where, ExplosionSize size, List <Texture> limbs)
    {
        GameObject g = Instantiate <GameObject>(explosionatorPrefab, transform);

        g.transform.position = where;
        g.GetComponent <Explosionator>().FireEffect(where, size, limbs);
    }
Exemple #2
0
    public void CreateExplosion(Vector3 position, Gradient[] colors, ExplosionSize size)
    {
        Debug.Log("Explosion");
        try
        {
            GameObject                explosion      = Instantiate(Resources.Load("Explosions/Explosion"), position, new Quaternion(0, 0, 0, 0)) as GameObject;
            ParticleSystem            particleSystem = explosion.GetComponent <ParticleSystem>();
            ParticleSystem.MainModule mainModule     = particleSystem.main;
            mainModule.startColor = new ParticleSystem.MinMaxGradient(colors[0], colors[1]);
            switch (size)
            {
            case ExplosionSize.Small:
                mainModule.startLifetime = 0.75f;
                mainModule.startSpeed    = 6.0f;
                break;

            case ExplosionSize.Medium:
                mainModule.startLifetime = 2.0f;
                mainModule.startSpeed    = 4.0f;
                break;

            case ExplosionSize.Large:
                mainModule.startLifetime = 3.0f;
                mainModule.startSpeed    = 3.0f;
                break;
            }
            Destroy(explosion, 3.0f);
        }
        catch
        {
            Debug.LogError("Explosion Instantiation failed");
        }
    }
    /// <summary>
    /// Plays the explosion animation
    /// </summary>
    /// <param name="size">Size of the explosion to play</param>
    public void PlayExplosion(ExplosionSize size)
    {
        switch (size)
        {
        case ExplosionSize.Small:
            gameObject.transform.localScale = smallScale;
            break;

        case ExplosionSize.Default:
            gameObject.transform.localScale = defaultScale;
            break;

        case ExplosionSize.Big:
            gameObject.transform.localScale = bigScale;
            break;

        default: break;
        }
        anim.SetBool("playAnim", true);
    }
    public void FireEffect(Vector3 where, ExplosionSize size, List <Texture> partsList)
    {
        GameObject inkTemp = Instantiate(Resources.Load <GameObject>("ExplosionResources/WetExplosion"), this.transform);

        inkTemp.transform.position = where;
        inkParticleSystem          = inkTemp.GetComponent <ParticleSystem>();

        if (size == ExplosionSize.Small)
        {
            inkParticleSystem.Emit(15);
        }
        else if (size == ExplosionSize.Medium)
        {
            inkParticleSystem.Emit(25);
        }
        else if (size == ExplosionSize.Large)
        {
            inkParticleSystem.Emit(40);
        }

        GameObject newLimbEmitter = Resources.Load <GameObject>("ExplosionResources/NewLimb");
        Material   newLimbMat     = Resources.Load <Material>("ExplosionResources/LimbMat");

        for (int i = 0; i < partsList.Count; i++)
        {
            GameObject emitterGO = Instantiate(newLimbEmitter, this.transform);
            emitterGO.transform.position = where;
            limbParticleSystems.Add(emitterGO);

            Material instLimbMat = Instantiate <Material>(newLimbMat);
            instLimbMat.SetTexture("_MainTex", partsList[i]);

            ParticleSystem pS = emitterGO.GetComponent <ParticleSystem>();
            pS.GetComponent <ParticleSystemRenderer>().material = instLimbMat;
            pS.Emit(1);
        }

        Invoke("_Cleanup", 5);
    }