I'm using this tutorial to practice creating an endless runner game :
http://www.raywenderlich.com/69544/make-game-like-jetpack-joyride-unity-2d-part-2
But now I want to make a vertical endless which has the character falling down.
I have this code but the rooms weren't spawning correctly.
using UnityEngine; using System.Collections; using System.Collections.Generic;
public class GenerateLevel : MonoBehaviour { Prefabs public GameObject[] availableRooms;
public List currentRooms; private float screenWidthInPoints; void Start () { float height = 2f * Camera.main.orthographicSize;
screenWidthInPoints = height * Camera.main.aspect; } void AddRoom(float farhtestRoomEndY) {
int randomRoomIndex = Random.Range(0, availableRooms.Length);
GameObject room = (GameObject)Instantiate(availableRooms[randomRoomIndex]);
float roomHeight = room.transform.FindChild("floor").localScale.y;
float roomCenter = farhtestRoomEndY + roomHeight * 0.5f;
room.transform.position = new Vector3(0, roomCenter, 0);
currentRooms.Add(room); } void GenerateRoomIfRequired() { List roomsToRemove = new List();
bool addRooms = true;
float playerY = transform.position.y;
float removeRoomY = playerY - screenWidthInPoints;
float addRoomY = playerY + screenWidthInPoints;
float farthestRoomEndY = 0;
foreach(var room in currentRooms) { float roomHeight = room.transform.FindChild("floor").localScale.y; float roomStartY = room.transform.position.y - (roomHeight * 0.5f); float roomEndY = roomStartY - roomHeight;
if (roomStartY > addRoomY)
addRooms = false;
if (roomEndY < removeRoomY)
roomsToRemove.Add(room);
farthestRoomEndY = Mathf.Min(farthestRoomEndY, roomEndY); }
foreach(var room in roomsToRemove) { currentRooms.Remove(room); Destroy(room); }
if (addRooms) AddRoom(farthestRoomEndY); } void Update () {
} void FixedUpdate () { GenerateRoomIfRequired(); } }
What's wrong with the code?
↧