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!

1 Answer

1

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. May I ask you to post things like this as a comment instead 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.