// This function is called by enemies' scripts public IEnumerator ApplyDamage(int damage) // "damage" value (refers to int "hp", health) isn't used for player in the project { // If the player is "invicible", ignore the damages by aborting the function if (invincible == true) { yield break; //return null; // FIX CS 13 01 2015 VERIFIER !! } Debug.Log("Player received damage !", gameObject); myTr.collider2D.enabled = false; myTr.renderer.enabled = false; myExhaustTr.renderer.enabled = false; canMove = false; camScrollEnabled = false; mainScript.showDebugGUI = false; // hide the debug GUI (if it is displayed) mainScript.audio.Stop(); // Create a big explosion ! for (int i = 0; i < 6; i++) { explosionClone = explosionPool.Spawn(); float randomXPos = UnityEngine.Random.Range(-0.04f, 0.04f); float randomYPos = UnityEngine.Random.Range(-0.04f, 0.04f); explosionClone.transform.position = myTr.position; /* * var tmpPos = myTr.position; * tmpPos.x = myTr.position.x + randomXPos; * tmpPos.y = myTr.position.y + randomYPos; * myTr.position = tmpPos; */ myTr.position = new Vector3(myTr.position.x + randomXPos, myTr.position.y + randomYPos, myTr.position.z); //explosionClone.SetActive(true); audio.clip = deathSound; audio.Play(); yield return(new WaitForSeconds(audio.clip.length)); } lifes = lifes - 1; yield return(new WaitForSeconds(2.0f)); // Launch "Die()" function located in the main script StartCoroutine(mainScript.Die()); }