public void addDamage(float damage) { enemyHealthIndicator.gameObject.SetActive(true); //Ativa o enemyHealthIndicator que começa desativado damage = damage * damageModifier; //Multiplica o dano pelo multiplicador de dano if (damage <= 0) { return; //Se não der dano sai da função } currentHealth -= damage; //Tira vida obviamente enemyHealthIndicator.value = currentHealth; //Muda o valor do slider pra vida atual zombieController aZombie = GetComponentInChildren <zombieController>(); if (aZombie != null) { Debug.Log("É zumbi"); Rigidbody zombieRB = GetComponent <Rigidbody>(); //Pega o rigidbody do zombie zombieRB.velocity = Vector3.zero; if (aZombie.GetFacing() == 1) { Debug.Log("Direita"); zombieRB.AddForce(new Vector3(-knockbackForce, 0, 0), ForceMode.Impulse); } else if (aZombie.GetFacing() == -1) { Debug.Log("Esquerda"); zombieRB.AddForce(new Vector3(knockbackForce, 0, 0), ForceMode.Impulse); } } enemyAS.Play(); //Toca o som de dano if (currentHealth <= 0) { makeDead(); //Chama a função que cuida do que deve acontecer quando ele morre } }
//Não é publico pq é acessado apenas pelos elementos da classe void makeDead() { //turnOffMovement zombieController aZombie = GetComponentInChildren <zombieController>(); //Pega o script zombie controller do filho zombieDetect --- se não tive então não é um zumbi if (aZombie != null) { aZombie.ragdollDeath(); } //Create Ragdoll --- Ai sim hein AudioSource.PlayClipAtPoint(deathSound, transform.position, 1f); //Toca esse deathSound aqui mesmo se o objeto for destruido Destroy(gameObject.transform.root.gameObject); //Pega o pai do objeto e destroi ele de uma vez, funciona assim pq esse script pode ser usado em outros inimigos if (drops) { Instantiate(droplist[Random.Range(0, droplist.Length)], transform.position, Quaternion.identity); //Dropa alguma coisa, nessa posição com essa rotaçaõ(Não rotaciona no caso, mantem a rotação original do que instanciou) } }
void makeDead() { //turn off movement //create ragdoll zombieController aZombie = GetComponentInChildren <zombieController>(); if (aZombie != null) { aZombie.ragdollDeath(); } AudioSource.PlayClipAtPoint(deathSound, transform.position, 0.15f); Destroy(gameObject.transform.root.gameObject); if (drops) { Instantiate(drop, transform.position, Quaternion.identity); } }