- Home /
Collecting objects?
I'm trying to create a game where the player collects five objects. I've added a script that destroys each object when you click on it. Is there a way for me to trigger fireworks or a sound or something once all five objects have been collected? Thanks a lot. I've only just started using Unity and don't know much about it.
I'll try it! Thank you so much, I had no idea how to go about this. Really appreciate it!
Answer by Lockstep · Apr 30, 2013 at 05:47 PM
You have to create some sort of counter. You will want to have it on a seperate script. Could be like this: (Code in C# but js works similar)
Inventory.cs:
//inside monobehaviour
public int counter; //The amount of items we already collected
public int maxItems; //The number of all items in total
private bool won;
void Awake(){ //Awake will be called before Start.
//Initialice the variables
counter = 0;
maxItems = 0;
won = false;
}
void Update(){
if(won == false && counter = maxItems){ //Check if we collected all items
won = true; //this will prevent calling the win sequence multiple times.
Winsequence(); //Put your firework/sound/etc code in this function;
}
}
On your item script you have to get a reference to your inventory script:
PickUp.cs:
//inside of monobehaviour again
private Inventory _inventory; reference to the script from above
void Start(){
//Find the reference to the script from above
//The script must be placed on a gameObject with the exact name: InventoryGameObject
//You have to make sure, that there is only one instance of this gameObject in your scene and it must not be destroyed.
//You can search UnityAnswers for singleton if this becomes a problem
_inventory = GameObject.Find("InventoryGameObject").GetComponent<Inventory>();
_inventory.maxItems ++; //Every pick up will increase the maxItems integer by one. At frame 1 maxItems will equal the actual number of items in the scene;
}
void OnMouseDown(){
_inventory.counter ++; //increase the counter by one
Destroy(this.gameObject); //You probalby got this already
}
You're welcome. $$anonymous$$ay I ask you to post things like this as a comment ins$$anonymous$$d of as answer? Also you should accept the answer if it works for you. This will help other people with the same problems to find the answer too and the board will be kept clean. Thank you.
Your answer
Follow this Question
Related Questions
Problem with timed code-execution (audioplay and object destruction) 1 Answer
using Contains(gameObject) to find and destroy a gameObject from a list 2 Answers
Help using trigger - My item won't be destroyed and I keep going through it 1 Answer
How to Play 3D Sound and Keep Script on Multiple Prefabs after Destroying a gameObject? 0 Answers