Search Unity

  1. Get the latest news, tutorials and offers directly to your inbox with our newsletters. Sign up now.
    Dismiss Notice

Infinite Runner Floor Creation

Discussion in 'Scripting' started by bdutton12, May 18, 2019.

  1. bdutton12

    bdutton12

    Joined:
    Apr 11, 2019
    Posts:
    7
    I have floor that spawns and destroys on collision with a destroyer but I use a list to translate each floor object and it seems that the new items aren't being added to the list properly? Here are the 2 scripts controlling this:

    Code (CSharp):
    1. public class FloorMovement : MonoBehaviour
    2. {
    3.     public GameObject[] tiles;
    4.     public List<GameObject> ts;
    5.     public int speed;
    6.     public GameObject[] obstacles;
    7.     GameObject obsInQues;
    8.     private void Start()
    9.     {
    10.         GameObject floor1 = Instantiate(obstacles[0], new Vector3(0, 0, 0), Quaternion.identity);
    11.         ts.Add(floor1);
    12.         GameObject floor2 = Instantiate(obstacles[0], new Vector3(0, 0, 60), Quaternion.identity);
    13.         ts.Add(floor2);
    14.         GameObject floor3 = Instantiate(obstacles[0], new Vector3(0, 0, 120), Quaternion.identity);
    15.         ts.Add(floor3);
    16.         GameObject floor4 = Instantiate(obstacles[0], new Vector3(0, 0, 180), Quaternion.identity);
    17.         ts.Add(floor4);
    18.     }
    19.     private void Update()
    20.     {
    21.         moveFloor();
    22.     }
    23.     public void moveFloor()
    24.     {
    25.         tiles = ts.ToArray();
    26.         for (int i = 0; i <= tiles.Length; i++)
    27.         {
    28.             GameObject tile = tiles[i];
    29.             tile.transform.Translate(0, 0, -speed);
    30.         }
    31.     }
    32.     public void SpawnObstacle()
    33.     {
    34.         int obs = Random.Range(0, obstacles.Length);
    35.         GameObject currentObs = Instantiate(obstacles[obs], new Vector3(0, 0, 240), Quaternion.identity);
    36.         ts.Add(currentObs);
    37.         Debug.Log("floor piece added");
    38.     }
    39. }
    40.  
    Code (CSharp):
    1. public class Destroyer : MonoBehaviour
    2. {
    3.     private void OnCollisionEnter(Collision collision)
    4.     {
    5.         FloorMovement removeFloorFromList = FindObjectOfType<FloorMovement>();
    6.         removeFloorFromList.ts.Remove(collision.gameObject);
    7.         Debug.Log("Collision");
    8.         Destroy(collision.gameObject);
    9.         Create();
    10.     }
    11.  
    12.     private void Create()
    13.     {
    14.         FloorMovement CreateObs = FindObjectOfType<FloorMovement>();
    15.         CreateObs.SpawnObstacle();
    16.     }
    17. }
     
    Last edited: May 18, 2019
  2. bdutton12

    bdutton12

    Joined:
    Apr 11, 2019
    Posts:
    7
    I solved it but idk how to mark it as solved here, could someone help lmao thanks
     
unityunity