using System.Collections; using System.Collections.Generic; using UnityEngine; public class LevelGenerator : MonoBehaviour { public static LevelGenerator instance{get; private set;} [SerializeField]private GameObject LevelPrefab; // [SerializeField]private GameObject TopPrefab; private List spawnedLevels = new List(); [SerializeField]private float spaceBetween = 1; [SerializeField]private float verticalSpace = 2; [SerializeField]private float maxLow; [SerializeField]private float maxHigh; [SerializeField]private List Levels; void Awake(){ instance = this; } void Start() { GenerateAhead(200); } public void GenerateAhead(int count = 10){ if(Levels.Count <= 0){ Levels = new List(); Levels.Add(1); } int startIndex= Levels.Count; int lastIndex = Levels.Count +count; for(int i =startIndex; i < lastIndex; i++){ float LastLevel = Levels[i-1]; float NewLevel = LastLevel + Random.Range(-maxLow, maxHigh); Levels.Add(NewLevel); float posX = i * spaceBetween; float posY = Levels[i]; GameObject newLevelObj = Instantiate(LevelPrefab, new Vector3(posX,posY,0), Quaternion.identity); newLevelObj.transform.parent=transform; spawnedLevels.Add(newLevelObj); // newLevelObj.transform.localScale = new Vector3(newLevelObj.transform.localScale.x, Mathf.Abs(LastLevel - NewLevel),1); Color color = (LastLevel < NewLevel) ? Color.green : Color.red; Color color2 = (LastLevel < NewLevel) ? new Color(0,0.29f,0) : new Color(0.29f,0,0); newLevelObj.GetComponentInChildren().color = color; // GameObject topObj = Instantiate(TopPrefab, new Vector3(posX, posY + verticalSpace,0), Quaternion.identity); // topObj.transform.parent = newLevelObj.transform; // topObj.GetComponentInChildren().color =color2; } } // Update is called once per frame void Update() { } void OnDrawGizmos(){ if(Levels == null){return;} if(Levels.Count < 2){return;} for(int i=1; i < Levels.Count; i++){ Gizmos.DrawLine(new Vector3((i-1)*spaceBetween, Levels[i-1]), new Vector3((i)*spaceBetween, Levels[i])); } } }