Пример #1
0
    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;
        }
    }
Пример #2
0
    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);
    }