예제 #1
0
 void OnTriggerEnter2D(Collider2D other)
 {
     if (!explodeTriggerFired)         /*inimigos do solo por ex n sao deletados dps de explodir, por isso essa checagem */
     //o que colidiu pode ser o player ou municao ( damageDelar) ou municao (AmmoHandler)
     {
         DamageDealer damageDealer = other.GetComponent <DamageDealer>();
         AmmoHandler  projectile   = other.GetComponent <AmmoHandler>();
         /* só importa o player e o projetil dele, qqr outra coisa que colidir com um inimigo será indiferente a ele */
         if (!damageDealer && !projectile)
         {
             return;
         }
         /*destroi municoes do player quando tocar no inimigo*/
         if (other.gameObject.tag == Constantes.PLAYERPROJETIL)
         {
             if (projectile)
             {
                 ProcessHit(projectile);
                 projectile.GetComponent <AmmoHandler>().InstantiateEffect();
                 projectile.DestroyMe();
             }
             else
             {
                 Debug.LogWarning(Constantes.MISSING_AMMO_HANDLER_SCRIPT);
             }
         }
         else if (other.gameObject.tag == Constantes.PLAYER)
         {
             if (damageDealer)               /*reduzira a vida do player em 55% se colidiur com um inimigo */
             {
                 damageDealer.HitDueDirectColision(GetHitPercentage());
             }
         }
     }
 }
예제 #2
0
    void OnTriggerEnter2D(Collider2D other)
    {
        //if(other.gameObject.layer == 17)/*layer mapas */
        //	CheckTileMapColision(other.gameObject);

        DamageDealer damageDealer    = other.GetComponent <DamageDealer>();
        AmmoHandler  enemyProjectile = other.GetComponent <AmmoHandler>();

        //é importante... n tire esse if ( se n tiver nenhum dos dois);
        if (!damageDealer && !enemyProjectile)
        {
            return;
        }
        /*independente do que colidiu, o player irá tomar um hit... */
        if (damageDealer)
        {
            if (damageDealer.CanHurt())           /*pois pode ser que o inimigo ja tenha sido morto, entao n é pra me ferir/mudar minha cor mais */
            {
                ProcessHit(damageDealer);
            }
        }
        else if (enemyProjectile)
        {
            ProcessHit(enemyProjectile);
        }
        /* dependendo do que colidiu com o player, esse irá ser destruído */
        if (other.gameObject.tag != Constantes.BOSS && !IsGroundEnemy(other)) //destroi inimigos comuns apenas
        {
            if (damageDealer)                                                 //inimigo perdera 25% da vida que tem ao colidir diretamente com o player
            {
                damageDealer.HitDueDirectColision(GetHitPercentage());
            }
            else if (enemyProjectile)
            {
                enemyProjectile.InstantiateEffect();
                enemyProjectile.DestroyMe();
            }
        }
    }