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()); } } } }
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(); } } }
private void ProjectileHandler(AmmoHandler playerProjectile) { playerProjectile.GetComponent <AmmoHandler>().InstantiateEffect(); playerProjectile.DestroyMe(); audioManager.play_die_audio(); }