- Home /
Question by
NthingSinistr · Dec 02, 2016 at 06:15 PM ·
c#endless runnerinfinite runner
Endless Runner Overlapping Platforms Bug
Hello! I'm a new Unity user and would greatly appreciate any help you can provide answering my question or leading me to the answer. I'm making a 2D endless runner, and my platforms bunch and overlap like this:
Here is my code. It's sorta long, but I think the problem may be towards the end after the heightChange variable calls.
using UnityEngine;
using System.Collections;
public class PlatformGenerator : MonoBehaviour
{
public GameObject platform;
public GameObject[] platforms;
public Transform generationPoint;
public float distanceBetweenMin;
public float distanceBetweenMax;
public ObjectPooler[] objectPools;
public Transform maxHeightPoint;
public float maxHeightChange;
private float distanceBetween;
private float platformLength;
private float minHeight;
private float maxHeight;
private float heightChange;
private int platformSelector;
private float[] platformLengths;
// Use this for initialization
void Start ()
{
platformLength = platform.GetComponent<BoxCollider2D>().size.x;
platformLengths = new float[objectPools.Length];
for(int i = 0; i < objectPools.Length; i++)
{
platformLengths[i] = objectPools[i].pooledObject.GetComponent<BoxCollider2D>().size.x;
}
minHeight = transform.position.y;
maxHeight = maxHeightPoint.position.y;
}
// Update is called once per frame
void Update ()
{
if(transform.position.x < generationPoint.position.x)
{
distanceBetween = Random.Range(distanceBetweenMin, distanceBetweenMax);
platformSelector = Random.Range(0, objectPools.Length);
heightChange = transform.position.y + Random.Range(maxHeightChange, -maxHeightChange);
if(heightChange > maxHeight)
{
heightChange = maxHeight;
}else if(heightChange < minHeight)
{
heightChange = minHeight;
}
transform.position = new Vector3(transform.position.x + (platformLengths[platformSelector] / 2) + distanceBetween, 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 + (platformLengths[platformSelector] / 2), transform.position.y, transform.position.z);
}
}
}
Thanks for taking the time to look over my question.
overlap.png
(34.4 kB)
Comment
Your answer
Follow this Question
Related Questions
4 C# errors Endless Runner 0 Answers
3D infinite runner game platform generation gives an error 0 Answers
Can anyone help me with my 2D endless runner overlapping platforms? 0 Answers
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers