Skip to content

Instantly share code, notes, and snippets.

@jameshmread
Created November 11, 2017 15:10
Show Gist options
  • Save jameshmread/f0924736e7855229b74969b521daa4b1 to your computer and use it in GitHub Desktop.
Save jameshmread/f0924736e7855229b74969b521daa4b1 to your computer and use it in GitHub Desktop.
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