- Home /
Destroying Prefab
I am creating candy crush type of game where the randomly generated prefab are checked. If there is any 3 similar prefab , they get destroyed and randomly generated prefab will take place.Here as soon as the games starts the prefab are generated. When the destroyer function checks for any 3 similar prefab it gets destroyed but a random prefab is generated out of the border.I am not able to understand why is it happening. Please tell me why and its solution of it.
Here is the code
public class maincamera : MonoBehaviour {
public int gridWidth = 5;
public int gridHeight = 5;
public GameObject[] a = new GameObject[3];
public GameObject[,] grid=new GameObject[10,10];
void Awake()
{
CreateGrid(gridHeight,gridWidth);
DestroyCell ();
}
void CreateGrid(int numX, int numY)
{
a[0].tag="blue";
a[1].tag="green";
a[2].tag="grey";
for (int x = 0; x <gridWidth ; x++)
{
for (int y = 0; y <gridHeight ; y++)
{
Vector3 spawnlocation = new Vector3(x+x,y+y,0);
grid[x,y]=Instantiate (a[Random.Range(0,a.Length)],spawnlocation,Quaternion.identity)as GameObject ;
}
}
}
void DestroyCell()
{
for (int x=0; x<gridWidth; x++)
{
for(int y=0;y<gridHeight;y++)
{
try
{
if(grid[x,y]= grid[x-1,y] )
{
try{
if(grid[x-1,y]= grid[x-2,y])
{
Destroy (grid[x,y]);
Destroy (grid[x-1,y]);
Destroy (grid[x-2,y]);
grid[x,y]=Instantiate (a[Random.Range(0,a.Length)]) ;
grid[x-1,y]=Instantiate (a[Random.Range(0,a.Length)]) ;
grid[x-2,y]=Instantiate (a[Random.Range(0,a.Length)]) ;
}
}
catch{}
}
}catch{}
try
{
if(grid[x,y]= grid[x,y-1])
{
try
{
if(grid[x,y-1]= grid[x,y-2])
{
Destroy (grid[x,y]);
Destroy (grid[x,y-1]);
Destroy (grid[x,y-2]);
grid[x,y]=Instantiate (a[Random.Range(0,a.Length)]) ;
grid[x,y-1]=Instantiate (a[Random.Range(0,a.Length)]) ;
grid[x,y-2]=Instantiate (a[Random.Range(0,a.Length)]) ;
}
}
catch{}
}
}catch{}
try
{
if(grid[x,y+1]= grid[x,y+1])
{
try{
if(grid[x,y+1]= grid[x,y+2])
{
Destroy (grid[x,y]);
Destroy (grid[x,y+1]);
Destroy (grid[x,y+2]);
grid[x,y]=Instantiate (a[Random.Range(0,a.Length)]) ;
grid[x,y+1]=Instantiate (a[Random.Range(0,a.Length)]) ;
grid[x,y+2]=Instantiate (a[Random.Range(0,a.Length)]) ;
}
}catch{}
}
}catch{}
try
{
if(grid[x,y]= grid[x+1,y])
{
try
{
if(grid[x+1,y]= grid[x+2,y])
{
Destroy (grid[x,y]);
Destroy (grid[x+1,y]);
Destroy (grid[x+2,y]);
grid[x,y]=Instantiate (a[Random.Range(0,a.Length)]) ;
grid[x+1,y]=Instantiate (a[Random.Range(0,a.Length)]) ;
grid[x+2,y]=Instantiate (a[Random.Range(0,a.Length)]) ;
}
}catch{}
}
}catch{}
}
}
}
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
}
}
And here is the snapshot of the game
Your answer
Follow this Question
Related Questions
Add Asset Bundle Name to a prefab in "Editor Code" 1 Answer
Prefab of a prefab? 4 Answers
Physics.RayCast problem with instantiated prefab 0 Answers
Can not Get the Children of Prefab? 1 Answer
Prefab Variables Problem 0 Answers