コード例 #1
0
    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
        }
    }
コード例 #2
0
    //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)
        }
    }
コード例 #3
0
    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);
        }
    }