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); }
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); }