Пример #1
0
    // Update is called once per frame
    void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2)); // Declara de onde ele solta o raio

        RaycastHit hit;                                                                           // salva onde o raio bateu

        if (Input.GetMouseButtonDown(0))                                                          // se o botão foi pressionado

        {
            if (Physics.Raycast(ray, out hit))                // se o raycat bateu em algo. Out é passagem por referência no C#

            {
                GameObject obj = hit.collider.gameObject;                 //pega o objeto em que o ray bateu
                if (obj.tag == "Enemy")
                {
                    EnemyBehaviuor   enemy   = obj.GetComponent <EnemyBehaviuor> ();
                    Rigidbody        rb      = enemy.GetComponent <Rigidbody> ();                                                    // pega o rigid body do objeto em que o ray BATEU
                    LifeBarBehaviour lifeBar = obj.GetComponent <LifeBarBehaviour> ();
                    if (enemy.hitted == 5)                                                                                           // se ja tomou 5 tiros
                    {
                        GameObject explosionClone = (GameObject)Instantiate(explosion, obj.transform.position, Quaternion.identity); //instancia a explosão no lugar do cubo
                        StartCoroutine(WaitExplosion(explosionClone));                                                               //corrotina para esperar a explosão acabar
                        Destroy(obj);                                                                                                // destroi o inimigo
                    }
                    else
                    {
                        enemy.hitted++;                                          // aumenta o numero de tiros que o inimigo tomou
                        lifeBar.decreaseHealth(16.666f);                         // atualiza a barra
                        rb.AddForceAtPosition(ray.direction * Force, hit.point); // empurra o inimigo para tras
                    }
                }
            }
        }
    }
Пример #2
0
 public void OnCollisionStay(Collision col)
 {
     if (col.gameObject.tag == "Enemy") // se estiver encostando no inimifo
     {
         timerEnemy++;                  //incrementa um contador
     }
     if (timerEnemy >= 15)              // se o contator for maior do que 4
     {
         timerEnemy = 0;                //zera o timer
         LifeBarBehaviour mylifeBar = this.GetComponent <LifeBarBehaviour>();
         mylifeBar.decreaseHealth(5f);
         if (mylifeBar.getLife() <= 58f)
         {
             Dano.SetActive(true);
         }
         if (mylifeBar.Cur_Health == 0)
         {
             SceneManager.LoadScene("GameOverScreen");
         }
     }
 }