- Home /
End level when all enemies eliminated
I am making a simple FPS and I want to transfer the player to the next level (scene) after all of the enemies are eliminated. How am I supposed to do this? I am a beginner to Unity, and I only understand a very basic Idea of scripting. Please tell me the script, and where, or how, to put it.
Thank You SO MUCH in advance!
Answer by Statement · Apr 03, 2011 at 11:53 AM
You could make use of a game controller to count the number of enemies in your scene by having them register with the controller when they enable and unregister when they disable. When you reach a count of 0, you can load a new level.
To do this, find or create an empty game object in your scene tagged GameController (by default, there is none).
On this game object with the tag GameController, add the following ObjectivesManager.
ObjectivesManager.js
private var objectives : int;
function OnEnableObjective() { objectives++; }
function OnDisableObjective() { objectives--; if (objectives == 0) SendMessage("OnObjectives"); }
function OnObjectives() { Application.LoadLevel(Application.loadedLevel + 1); }
Then, on every enemy you should have code like this. You want to let the controller know that an objective was enabled and disabled at key moments.
Objective.js
function OnEnable() { var gameController = GameObject.FindGameObjectWithTag("GameController"); gameController.SendMessage("OnEnableObjective"); }
function OnDisable() { var gameController = GameObject.FindGameObjectWithTag("GameController"); gameController.SendMessage("OnDisableObjective"); }
thanks statement, but it seems like it is not working. i think the script doesnt disable after the enemy dies
Answer by Scribe · Apr 03, 2011 at 09:02 AM
function Update() { var enemies = GameObject.FindWithTag("enemy") //find gameobjects with the tag "enemy" (you must therefore tag the enemies with "enemy" if(enemies == null){ //if no gameobjects with the tag "enemy" are found
//change scene
}
}
not certain this will work as I'm away from unity at the moment but basically it finds all the gameobjects with the tag "enemy", if it doesn't find any then you can put in a script to change the scene
hopefully its useful
Scribe
Your answer
Follow this Question
Related Questions
How do I finish a level and send the player to the next? 3 Answers
Load a scene/level when enemy is close... 1 Answer
Random level select 1 Answer
The associated script cannot be loaded. 1 Answer
Can a script be loaded to a next scene? 3 Answers