Example #1
0
    private void GenerateSpawnables(SpawnableLayer layer)
    {
        ForestManager manager = ForestManager.INSTANCE;

        if (manager.chunkCount <= 1 || manager.chunkCount <= layer.minChunkCount)
        {
            return;
        }

        int expectedAmount = 8 + (3 * (manager.waveNr > fibbonacci.Length ? fibbonacci[fibbonacci.Length] : fibbonacci[manager.waveNr]));

        Debug.Log(manager.chunkCount + " - " + expectedAmount + " will be spawned");
        for (int i = 0; i < expectedAmount; i++)
        {
            //spawn at a random spot
            float      x         = transform.position.x + Random.Range(.05f, .95f) * bc.bounds.size.x;
            GameObject spawnable = GameObject.Instantiate(layer.prefab);
            spawnable.transform.position = new Vector2(x, layer.yValue);
            spawnable.transform.parent   = null;
            objects.Add(spawnable);
            EnemyKnight enemy = spawnable.GetComponent <EnemyKnight>();
            if (enemy != null)
            {
                enemy.hp = 3 + (manager.waveNr * 2);
            }


            //        }
        }
    }
    IEnumerator SlimeEnemy(EnemyKnight enemy)
    {
        gameObject.transform.position = enemy.transform.position;
        Destroy(enemy.gameObject);
        GetComponent <Animator>().SetTrigger("SlimeEnemy");
        yield return(new WaitForSeconds(2f));

        Destroy(gameObject);
    }
    public override bool ActivateResource()
    {
        HeroKnight  player = FindObjectOfType <HeroKnight>();
        EnemyKnight enemy  = FindEnemyClosestToPlayer();

        if (enemy && player && Vector2.Distance(enemy.transform.position, player.transform.position) <= minDistanceToSlime)
        {
            gameObject.SetActive(true);
            StartCoroutine(SlimeEnemy(enemy));
            return(true);
        }

        return(false);
    }
Example #4
0
    public static EnemyKnight FindEnemyClosestToPlayer()
    {
        HeroKnight player = FindObjectOfType <HeroKnight>();

        EnemyKnight[] enemies     = FindObjectsOfType <EnemyKnight>();
        EnemyKnight   closest     = null;
        float         minDistance = 0;

        foreach (EnemyKnight enemy in enemies)
        {
            float distance = Vector2.Distance(player.transform.position, enemy.transform.position);

            if (closest == null || distance < minDistance)
            {
                closest     = enemy;
                minDistance = distance;
            }
        }

        return(closest);
    }