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