Created
November 11, 2017 15:10
-
-
Save jameshmread/f0924736e7855229b74969b521daa4b1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Collections; | |
using System.Collections.Generic; | |
using UnityEngine; | |
public class PlatformGenerator : MonoBehaviour { | |
public Transform generationPoint; | |
public float distanceBetweenPlatforms; | |
//private float platformWidth; | |
public float[] platformWidths; | |
public float minDistance; | |
public float maxDistance; | |
public Transform maxHeightPoint; | |
private float minHeight; | |
private float maxHeight; | |
public float maxHeightChange; | |
private float heightChange; | |
//public GameObject[] platformArray; | |
public int platformSelector; | |
public ObjectPooler[] objectPools; | |
private CoffeeGenerator coffeeGenerator; | |
private ObstacleGenerator obsticalGenerator; | |
// Use this for initialization | |
void Start() { | |
platformWidths = new float[objectPools.Length]; | |
for (int i = 0; i < objectPools.Length; i++) | |
{ | |
platformWidths[i] = objectPools[i].pooledObject.GetComponent<BoxCollider2D>().size.x; | |
} | |
minHeight = transform.position.y; | |
maxHeight = maxHeightPoint.position.y; | |
manager = FindObjectOfType<GameManager>(); | |
} | |
// Update is called once per frame | |
void Update () { | |
if (transform.position.x < generationPoint.position.x) | |
{ | |
distanceBetweenPlatforms = Random.Range(minDistance, maxDistance); | |
platformSelector = Random.Range(0, objectPools.Length); | |
heightChange = transform.position.y + Random.Range(maxHeightChange, -maxHeightChange); | |
//constrains the height change to prevent platforms going off screen | |
if (heightChange > maxHeight) | |
heightChange = maxHeight; | |
else if (heightChange < minHeight) | |
heightChange = minHeight; | |
transform.position = new Vector3(transform.position.x + (platformWidths[platformSelector] / 2) + distanceBetweenPlatforms, heightChange, transform.position.z); | |
GameObject newPlatform = objectPools[platformSelector].getPooledObject(); | |
newPlatform.transform.position = transform.position; | |
newPlatform.transform.rotation = transform.rotation; | |
newPlatform.SetActive(true); | |
transform.position = new Vector3(transform.position.x + (platformWidths[platformSelector] / 2), transform.position.y, transform.position.z); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment