using System.Collections; using System.Collections.Generic; using UnityEngine; public class TF_FSC : MonoBehaviour { public GameObject enemyPrefab; [SerializeField] private float spawnDelay = .5f; [SerializeField] private float width = 2f; [SerializeField] private float height = 2f; [SerializeField] private float speed = 5f; private bool movingRight = true; private float xmax; private float xmin; public float Delay; public float EnemyCount; public AudioClip TFEngine; // Use this for initialization void Start () { // Assigning PlaySpace Move boundaries float distanceToCamera = transform.position.z - Camera.main.transform.position.z; Vector3 leftBoundary = Camera.main.ViewportToWorldPoint(new Vector3(0,0,distanceToCamera)); Vector3 rightBoundary = Camera.main.ViewportToWorldPoint(new Vector3(1,0,distanceToCamera)); xmax = rightBoundary.x; xmin = leftBoundary.x; } public void OnDrawGizmos() { Gizmos.DrawWireCube(transform.position, new Vector3(width, height)); } // Update is called once per frame void Update () { if(this.transform.parent.GetComponent().SquadronDelay <= 0){ Delay -= Time.deltaTime; if(AllMembersDead()){ SpawnUntilFull(); } } } bool AllMembersDead (){ foreach(Transform childPositionGameObject in transform){ if (childPositionGameObject.childCount > 0){ return false; } } return true; } Transform NextFreePosition () { foreach(Transform childPositionGameObject in transform) { if (childPositionGameObject.childCount == 0) { return childPositionGameObject; } } return null; } void SpawnUntilFull () { Transform freePosition = NextFreePosition(); if (EnemyCount > 0){ if (Delay <= 0){ if (freePosition) { GameObject enemy = Instantiate(enemyPrefab, freePosition.position, Quaternion.identity) as GameObject; enemy.transform.parent = freePosition; EnemyCount -= 1; AudioSource.PlayClipAtPoint(TFEngine, transform.position); } } } if(NextFreePosition()) { Invoke ("SpawnUntilFull", spawnDelay); } } }