using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class Main : MonoBehaviour { static public Main S; [Header("Set in Inspector")] public GameObject[] prefabEnemies; public float enemySpawnPerSecond = 0.5f; public float enemyDefaultPadding = 1.5f; private BoundsCheck bndCheck; public void ShipDestroyed(Enemy e) { // Potentially generate a Powerup } void Awake() { S = this; // Set bndCheck to reference the BoundsCheck component of this GameObject bndCheck = GetComponent(); // Invoke SpawnEnemy() once (in 2 seconds, based on default values) Invoke("SpawnEnemy", 1f/enemySpawnPerSecond); } public void SpawnEnemy() { // Pick a random Enemy prefab to instantiate int ndx = Random.Range(0, prefabEnemies.Length); GameObject go = Instantiate(prefabEnemies[ndx]); // Position the Enemy above the screen with a random x position float enemyPadding = enemyDefaultPadding; if (go.GetComponent() != null) { enemyPadding = Mathf.Abs(go.GetComponent().radius); } // Set the initial position for the spawned Enemy Vector3 pos = Vector3.zero; float xMin = -bndCheck.camWidth + enemyPadding; float xMax = bndCheck.camWidth - enemyPadding; pos.x = Random.Range(xMin, xMax); pos.y = bndCheck.camHeight + enemyPadding; go.transform.position = pos; // Invoke SpawnEnemy() again Invoke("SpawnEnemy", 1f/enemySpawnPerSecond); } public void DelayedRestart(float delay) { // Invoke the Restart() method in delay seconds Invoke("Restart", delay); } public void Restart() { // Reload _Scene_0 to restart the game SceneManager.LoadScene("_Scene_0"); } }