// 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());
    }