I have a 2D grenade that I want damage 2d enemies.
void Update()
{
if (Time.time > _birthTime + _ageTime)
{
DamageEnemiesInRange();
Destroy(gameObject);
}
}
private void DamageEnemiesInRange()
{
var allEnemies = FindObjectsOfType<NEnemy>();
var enemiesInRange =
allEnemies.Where(x => Vector2.Distance(x.transform.position, transform.position) < damageRange).ToList();
foreach (var enemy in enemiesInRange)
{
enemy.GetComponent<NEnemy>().TakeDamage(10);
}
}
this is damage code and how I call it in update. I wanna damage enemies in grenade range after 5 seconds and destroy the grenade.
The problem is enemy’s health is 100 and the grenade damage is 10 but the enemy destroy with only one grenade and I thing the grenade damage 10 times.
this is enemy code :
public void TakeDamage(int damage)
{
_currentHealth -= damage;
var normalizedHealth = _currentHealth / (float)maxHealth;
healthBar.NormalizedHealth = normalizedHealth;
if (_currentHealth <= 0)
{
Kill();
}
}
private void Kill()
{
Destroy(gameObject);
}