Exemplo n.º 1
0
    private void PutEffect(WaterRepulsion water, GameObject character, bool exit)
    {
        CharacterSize sizeCharacter = character.GetComponent<CharacterSize>();
        int size=sizeCharacter.GetSize();
        Bounds collider = water.GetCollider();
        Vector3 position = character.transform.position;
        position.y = collider.max.y + 0.2f + yOffset;
        position.z = 0;

        List<GameObject> effects = new List<GameObject>();

        if (size > 0) {
            GameObject effect = Instantiate(waves, position, Quaternion.identity) as GameObject;

            ParticleSystem[] systems = effect.GetComponentsInChildren<ParticleSystem>();
            foreach (ParticleSystem sys in systems) {
                sys.randomSeed = (uint)UnityEngine.Random.Range(0, int.MaxValue);
                sys.Simulate(0, true, true);
                sys.Play();
            }

            effect.transform.localScale = size * Vector3.one;
            effects.Add(effect);
        }

        if (size > 2) {
            GameObject effect = Instantiate(splash, position, Quaternion.identity) as GameObject;

            ParticleSystem[] systems = effect.GetComponentsInChildren<ParticleSystem>();
            foreach (ParticleSystem sys in systems) {
                sys.randomSeed = (uint)UnityEngine.Random.Range(0, int.MaxValue);
                sys.Simulate(0, true, true);
                sys.Play();
            }

            effect.transform.localScale = size * Vector3.one;
            effects.Add(effect);
        }

        if (size > 4 && !exit){
            GameObject effect = Instantiate(columnWater, position, Quaternion.identity) as GameObject;

            ParticleSystem[] systems = effect.GetComponentsInChildren<ParticleSystem>();
            foreach (ParticleSystem sys in systems) {
                sys.randomSeed = (uint)UnityEngine.Random.Range(0, int.MaxValue);
                sys.Simulate(0, true, true);
                sys.Play();
            }

            effect.transform.localScale = size * Vector3.one;
            effects.Add(effect);
        }

        // Destroys the systems
        foreach (GameObject effect in effects) {
            GameControllerTemporal.AddTemporal(effect);
            Destroy(effect, duration);
        }
    }