- Home /
Question by
mav1704h · Feb 19 at 09:28 PM ·
2dcollider2dattackforeach
Can only Attack one Enemy type
The problem I have is, that I can only damage on enemy Type when melee attacking
}
void Attack()
{
Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
foreach(Collider2D enemy in hitEnemies)
{
enemy.GetComponent<Enemy1>().TakeDamage(attackDamage);
enemy.GetComponent<Enemy2>().TakeDamage(attackDamage);
}
}
}
Comment
Answer by Rafit345 · Feb 20 at 01:59 AM
If each enemy only has one of the two scripts, you can't call both GetComponents. Here are some alternatives:
if(enemy.TryGetComponent(out Enemy1 hitEnemy))
{ hitEnemy.TakeDamage(attackDamage);}
else if(enemy.TryGetComponent(out Enemy2 hitEnemy))
{ hitEnemy.TakeDamage(attackDamage);}
or
if(enemy.GetComponent<Enemy1>() != null)
{enemy.GetComponent<Enemy1>().TakeDamage(attackDamage);}
else if(enemy.GetComponent<Enemy2>() != null)
{enemy.GetComponent<Enemy2>().TakeDamage(attackDamage);}
Your answer
![](https://koobas.hobune.stream/wayback/20220613053237im_/https://answers.unity.com/themes/thub/images/avi.jpg)