public void hitByPlayerBullet()
    {
        // Crear l'objecte emissor de partícules
        ParticleSystem deathFxParticle =
            (ParticleSystem)Instantiate(deathFxParticlePrefab);
        // Obtenir la posició de l'enemic
        Vector3 enemyPos = transform.position;
        // Crear un nou vector davant de l'enemic (incrementar component z)
        Vector3 particlePosition =
            new Vector3(enemyPos.x, enemyPos.y, enemyPos.z + 1.0f);

        // Posicionar l'emissor de partícules en aquesta nova posició
        deathFxParticle.transform.position = particlePosition;
        // Generar event enemyDied i donar una puntuacio de 25 punts.
        if (enemyDied != null)
        {
            enemyDied(25);
        }
        ScoreWatcher2.addScore(25);
        // Esperar un moment i destruir l'objecte Enemy
        Destroy(gameObject, 0.1f);
    }
    void Update()
    {
        if (currentEvent == bossEvents.inactive)
        {
        }
        else
        {
        }
        switch (currentEvent)
        {
        case bossEvents.inactive:
            // Not doing anything, so nothing to do.
            break;

        case bossEvents.fallingToNode:
            if (transform.position.y > targetNode.transform.position.y)
            {
                // Velocitat negativa, per desplaçar-se cap abaix
                transform.Translate(new Vector3(0f, -moveSpeed *
                                                Time.deltaTime, 0f));
                if (transform.position.y <
                    targetNode.transform.position.y)
                {
                    Vector3 targetPos =
                        targetNode.transform.position;
                    transform.position = targetPos;
                }
            }
            else
            {
                // Crear efecte d'aterratge (Partícules)
                createDropFX();

                timeForNextEvent = 0.0f;
                currentEvent     = bossEvents.waitingToJump;
            }
            break;

        case bossEvents.waitingToFall:
            // Boss esperant per caure en un altre node
            if (timeForNextEvent == 0.0f)
            {
                timeForNextEvent = Time.time + eventWaitDelay;
            }
            else if (timeForNextEvent < Time.time)
            {
                // Need to find a new node!
                targetNode = dropNodeList[Random.Range(0, dropNodeList.Count)];

                // Posició del Boss SOBRE el node destí
                transform.position = getSkyPositionOfNode(targetNode);

                // actualitzar estat
                currentEvent     = bossEvents.fallingToNode;
                timeForNextEvent = 0.0f;
            }
            break;

        case bossEvents.waitingToJump:
            // Boss espera, situat sobre plataforma, el moment de canviar
            if (timeForNextEvent == 0.0f)
            {
                timeForNextEvent = Time.time + eventWaitDelay;
            }
            else if (timeForNextEvent < Time.time)
            {
                // Estableix posició objetiu per elevar-se sobre node actual
                targetPosition = getSkyPositionOfNode(targetNode);

                // Actualitzar estat
                currentEvent     = bossEvents.jumpingOffPlatform;
                timeForNextEvent = 0.0f;

                targetNode = null;
            }
            break;

        case bossEvents.jumpingOffPlatform:
            if (transform.position.y < targetPosition.y)
            {
                // Velocitat positiva, moviment ascendent
                transform.Translate(new Vector3(0f, moveSpeed *
                                                Time.deltaTime, 0f));
                if (transform.position.y > targetPosition.y)
                {
                    transform.position = targetPosition;
                }
            }
            else
            {
                timeForNextEvent = 0.0f;
                currentEvent     = bossEvents.waitingToFall;
            }
            break;
        }
        if (health <= 0)
        {
            Debug.Log("Killing Boss");
            // Crear l'objecte emissor de partícules
            ParticleSystem deathFxParticle =
                (ParticleSystem)Instantiate(deathFxParticlePrefab);
            // Obtenir la posició de l'enemic
            Vector3 bossPos = transform.position;
            // Crear un nou vector davant de l'enemic (incrementar component z)
            Vector3 particlePosition =
                new Vector3(bossPos.x, bossPos.y, bossPos.z + 1.0f);
            // Posicionar l'emissor de partícules en aquesta nova posició
            deathFxParticle.transform.position = particlePosition;
            // Generar l'event “bossDied” amb una puntuació de 1000 punts
            ScoreWatcher2.addScore(1000);
            health = startHealth;
            bossDied(1000);
            killBoss();
        }
    }