- Home /
Problem with spawning script
Hi im working on a game which spawns obstacles the player has to jump through. i couldnt find an of these problems online so i decided to ask here. The problem is that the obstacles spawn higher then the ground that i've made.
[1]: /storage/temp/22279-untitled-1.jpg
I also have a problem with the same obstacle spawning up to (x) times in a row, i want it so that the obstacles doesnt spawn twice in a row. this is the script im using so far.
using UnityEngine;
using System.Collections;
public class SpawnScript : MonoBehaviour {
public GameObject[] obj;
public float spawnMin = 1f;
public float spawnMax = 2f;
// Use this for initialization
void Start () {
Spawn();
}
void Spawn()
{
Instantiate(obj[Random.Range (0, obj.GetLength(0))], transform.position, Quaternion.identity);
Invoke ("Spawn", Random.Range (spawnMin, spawnMax));
}
}
If there is a tutorial on this it would be much appreciated. Thank you for your help
Answer by mattyman174 · Feb 17, 2014 at 01:13 AM
You need to keep a reference to the previously spawned Obstacle so that when you want to Instantiate a new one, you can check that the new Obstacle is not the same as the previous one.
private int previousObstacleIndex = -1; //Not 0 so we dont discount the first Array Element.
private int currentObstacleIndex;
void Spawn()
{
currentObstacleIndex = Random.Range(0, obj.GetLength(0));
if (previousObstacleIndex != currentObstacleIndex)
{
Instantiate(obj[currentObstacleIndex], transform.position, Quaternion.identity);
previousObstacleIndex = currentObstacleIndex;
}
Invoke("Spawn", Random.Range(spawnMin, spawnMax));
}
Your answer
Follow this Question
Related Questions
Spawn Script Issue 0 Answers
Help: script that worked don't work with Unity 3.5 0 Answers
C# Make array based on script variable 1 Answer
Spawned units disappear 2 Answers
Pressing "Fire2" Spawns and removes object on click 0 Answers