IEnumerator spawnEnemies() { while (true) { GameObject currentEnemie = enemies[Random.Range(0, enemies.Length)]; setPath = currentEnemie.GetComponent <AiUnitScript>(); setPath.path = spawnPath; GameObject enenmieClone = Instantiate(currentEnemie, transform.position, Quaternion.identity); enenmieClone.transform.SetParent(parentEnemies.transform); yield return(new WaitForSeconds(respawnTime)); } }
//this wil shoot projectile towards an enemy private IEnumerator ProjectileLerp(Transform projectile, Transform enemy, AiUnitScript enemyStat) { float speed = 0; while (speed < 1) { projectile.position = Vector2.Lerp(projectile.position, enemy.position, 0 + speed); speed += 0.01f; yield return(new WaitForSeconds(projectileSpeed / 10)); } if (true) { Destroy(projectile.transform.gameObject); } Debug.Log(enemyStat.getHealth); enemyStat.getHealth = -towerDamage; if (enemyStat.getHealth < 0 || enemyStat.getHealth == 0) { Destroy(enemy.transform.gameObject); } doIt = true; }
//this wil shoot at the closest target given with use of the checkforenemys function private IEnumerator ShootAtTarget() { GameObject currentTarget = CheckForEnemys()[0]; List <GameObject> allBullets = new List <GameObject>(); float distanceToEnemy = Vector2.Distance(transform.position, currentTarget.transform.position); AiUnitScript enemyStat = currentTarget.GetComponent <AiUnitScript>(); while (distanceToEnemy < detectRange) { currentTarget = CheckForEnemys()[0]; allBullets.Add(Instantiate(bulletType, transform.position, Quaternion.identity)); doIt = false; for (int i = 0; i < allBullets.Count; i++) { if (allBullets[i].transform.position != currentTarget.transform.position) { StartCoroutine(ProjectileLerp(allBullets[i].transform, currentTarget.transform, enemyStat)); } allBullets.RemoveAt(i); } yield return(new WaitForSeconds(attackSpeed)); } }