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);
        }
    }
 public virtual void OnWaterExit(WaterRepulsion water, GameObject character, Vector3 repulsionVelocity)
 {
     // Do nothing
 }
 public virtual void OnWaterEnter(WaterRepulsion water, GameObject character)
 {
     // Do nothing
 }
Exemplo n.º 4
0
 public void OnWaterExit(WaterRepulsion water, GameObject character, Vector3 repulsionVelocity)
 {
     PutEffect(water, character, true);
 }
Exemplo n.º 5
0
 public void OnWaterEnter(WaterRepulsion water, GameObject character)
 {
     PutEffect(water, character, false);
 }
Exemplo n.º 6
0
 void Awake()
 {
     // Retrieves the desired components
     _waterRepulsion = GetComponent<WaterRepulsion>();
     _originalAudioSource = GetComponent<AudioSource>();
 }
Exemplo n.º 7
0
 public void OnWaterExit(WaterRepulsion water, GameObject character, Vector3 repulsionVelocity)
 {
     SoundUtility.PlaySoundAtPosition(_originalAudioSource, exitSound, character.transform.position);
 }
Exemplo n.º 8
0
 public void OnWaterEnter(WaterRepulsion water, GameObject character)
 {
     SoundUtility.PlaySoundAtPosition(_originalAudioSource, enterSound, character.transform.position);
 }