PoggyBird/Assets/Scripts/LevelGenerator.cs
2023-01-16 08:19:32 +05:30

67 lines
2.1 KiB
C#

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<GameObject> spawnedLevels = new List<GameObject>();
[SerializeField]private float spaceBetween = 1;
[SerializeField]private float verticalSpace = 2;
[SerializeField]private float maxLow;
[SerializeField]private float maxHigh;
[SerializeField]private List<float> Levels;
void Awake(){
instance = this;
}
void Start()
{
}
public void GenerateAhead(int count = 10){
if(Levels.Count <= 0){
Levels = new List<float>();
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);
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.GetComponent<SpriteRenderer>().color = color;
GameObject topObj = Instantiate(TopPrefab, new Vector3(posX, posY + verticalSpace,0), Quaternion.identity);
topObj.transform.parent = newLevelObj.transform;
topObj.GetComponentInChildren<SpriteRenderer>().color =color2;
}
}
// Update is called once per frame
void Update()
{
}
}