public IEnumerator EventProcess() { transform.collider2D.enabled = false; if (setCheckpoint == true) { mainScript.checkpointPos = /*transform.position.x*/ checkpointPosition; } if (setMusic == true) { StartCoroutine(mainScript.MusicPlay(music, musicLoop, musicWaitForClipEnd, musicDelay)); } else // if (setMusic == false) if (stopMusic == true) { StartCoroutine(mainScript.MusicStop(musicFadeOut)); } if (setText == true) { uiTextMesh.text = text; uiTextGO.transform.localPosition = new Vector3(textPosition.x, textPosition.y, uiTextGO.transform.localPosition.z); uiTextMesh.characterSize = textSize; uiTextMesh.color = textColor; // (Text duration : if set to 0, text duration is null and text will stay displayed) if (textDuration > 0) { yield return(new WaitForSeconds(textDuration)); uiTextMesh.text = ""; } } if (setLevel == true) { if (setCheckpoint == true) { PlayerPrefs.SetFloat("Spawn position", checkpointPosition); } mainScript.level = levelValue; // Change level value in "MainScript" StartCoroutine(mainScript.SetLevel()); } if (setUpgrade == true) { GameObject upgradeClone = upgradePool.Spawn(); upgradeClone.transform.position = new Vector3(transform.position.x + upgradePosition.x, transform.position.y + upgradePosition.y, upgradeClone.transform.localPosition.z); } }
public IEnumerator ApplyDamage(int damage) { // Ensure that object receiving damage is not sleeping (and therefore out of screen) if (asleep == true) { yield break; //return null; // FIX CS 13 01 2015 VERIFIER !! } hp = hp - 1; if (hp > 0) { StartCoroutine(DamageBlink()); audio.clip = armorSound; audio.Play(); // Raise the difficulty for our boss fight ! if (hp < 20) { actionDelayMax = shootDelayMax = 60.0f; } if (hp < 10) { actionDelayMax = shootDelayMax = 35.0f; } } else { audio.Play(); myTr.collider2D.enabled = false; yield return(null); asleep = true; // Stop all coroutines relative to the audio in "MainScript" mainScript.StopCoroutine("MusicPlay"); mainScript.StopCoroutine("MusicStop"); yield return(null); mainScript.audio.Stop(); StartCoroutine(mainScript.MusicPlay(victorySound, false, false, 0.0f)); // music, musicLoop, musicWaitForClipEnd, musicDelay playerScript.UpdateScore(scoreValue); //REGULAR METHOD : INSTANTIATE (unoptimised) //explosionClone = Instantiate(explosion, Vector3 (myTr.position.x, myTr.position.y, myTr.position.z), Quaternion.identity); // Pooling Method : grab object from "ObjectPooler"'s gameObjects list // Create a big explosion ! for (int i = 0; i < 20; i++) { explosionClone = explosionPool.Spawn(); float randomXPos = UnityEngine.Random.Range(-0.08f, 0.08f); float randomYPos = UnityEngine.Random.Range(-0.08f, 0.08f); explosionClone.transform.position = new Vector3(myTr.position.x + randomXPos, myTr.position.y + randomYPos, explosionClone.transform.position.z); audio.clip = deathSound; audio.Play(); yield return(new WaitForSeconds(audio.clip.length)); } var tmpColor = mySpriteRdr.color; tmpColor.a = 0.0f; mySpriteRdr.color = tmpColor; // search for "GiveCoins" value in player preferences if (PlayerPrefs.HasKey("Give coins") == false || PlayerPrefs.GetInt("Give coins") == 1) { giveCoins = false; // we use the value 2 for true, and one for false } else if (PlayerPrefs.GetInt("Give coins") == 2) { giveCoins = true; } if (giveCoins == true) { coinPos = myTr.position; for (i = 0; i < scoreValue * 0.1f; i++) { //REGULAR METHOD : INSTANTIATE (unoptimised) //coinClone = Instantiate(coin, coinPos, Quaternion.identity); // Pooling Method : grab object from "ObjectPooler"'s gameObjects list coinClone = coinPool.Spawn(); coinClone.transform.position = coinPos; yield return(null); } } yield return(new WaitForSeconds(2.0f)); StartCoroutine(DestroyObject()); } }