public void Damage(EnemyAim attacker) { Vector3 bloodDir = (GetPosition() - attacker.GetPosition()).normalized; Blood_Handler.SpawnBlood(GetPosition(), bloodDir); healthSystem.Damage(1); if (IsDead()) { FlyingBody.Create(GameAssets.i.pfEnemyFlyingBody, GetPosition(), bloodDir); playerBase.DestroySelf(); Destroy(gameObject); } else { // Knockback transform.position += bloodDir * 2.5f; } }
public static EnemyAim GetClosestEnemy(Vector3 position, float maxRange) { EnemyAim closest = null; foreach (EnemyAim enemy in enemyList) { if (enemy.IsDead()) { continue; } if (Vector3.Distance(position, enemy.GetPosition()) <= maxRange) { if (closest == null) { closest = enemy; } else { if (Vector3.Distance(position, enemy.GetPosition()) < Vector3.Distance(position, closest.GetPosition())) { closest = enemy; } } } } return(closest); }