- Home /
Can't proceed next level when the object destroy not complete.
I don't know how to script if the 4 objects in the scene did not destroy then he did not proceed to the next level of the game. -i have 4 object in my game play the player then to destroy all the 4 objects to go in the next level. how is it? please help me.
Answer by mesho · Feb 16, 2012 at 05:37 AM
simply add Application.loadedLevel ("levelName");
Before the Destroy action not After it
Answer by BiG · Feb 16, 2012 at 07:30 AM
Add a function OnDestroy( ) to each one of your 4 objects. In this function, you'll simply turn a boolean variable to TRUE. When all the four variables are TRUE, you can access next level. What I mean is something like this:
(NOTE: the following code is untested, and its purpose is just to give you a general idea on this)
This is a global variable, and it'll contains all the flags for checking the destructions:
var flags : boolean[] = new boolean[4];
This script is attached to each one of the 4 objects (with different "object_index"!!!), and this will be activated if the object is destroied:
var object_index = 1; //object_index's value is 1 for the 1° object, 2 for the 2° one,...,4 for the 4° one
function OnDestroy(){
flags[object_index] = 1;
}
This function has to be called from the Update() of the object in which you check for the level changing:
function Update(){ //... Check_next_level; //... }
function Check_next_level(){ going_to_next_level = 1; for (var i=1; i++; i<5){ if (flags[i] == 0){ going_to_next_level = 0; break; } } if (going_to_next_level){ level_index++; //You have to declare this outside, and use it to mantain the reference to the actual level Application.LoadLevel(level_index); } }
flags is an array and flags[object_index] is equal to 1 if that object has been destroied (so, flags[2]=1 means that the 2° object has been destroied). And no, they are not "in one file": the first script has to be attached to each one of the 4 objects; the second one, it depends by the point in which you check for the next level.
var puzzle : boolean[] = new boolean[4]; var 4 = 1; function OnDestroy(){ flags[4] = 1;
i am right??
i try to edit the script you give. I am right?
function Update(){ //... Check_next_level; //... }
function Check_next_level(){ going_to_next_level = 1; for (var i=1; i++; i<5){ if (flags[i] == 0){ going_to_next_level = 0; break; } } if (going_to_next_level){ level_index++; -->should i change it? Application.LoadLevel(level_index); } }
->this is right