void Update() { // Selecting a new crate if (Input.GetMouseButtonDown(0)) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { if (hit.collider.tag == "Crate") { if (currentlySelected != null) { currentlySelected.SetSelected(false); } currentlySelected = hit.collider.GetComponent <Crate>(); currentlySelected.SetSelected(true); camMovement.FocusTarget(currentlySelected.gameObject.transform); } } } // Spawn a new crate if (Input.GetKeyDown(KeyCode.Space)) { float spawnX = Random.Range(-maxSpawnOffset, maxSpawnOffset); float spawnY = Random.Range(-maxSpawnOffset, maxSpawnOffset); float spawnZ = Random.Range(-maxSpawnOffset, maxSpawnOffset); Vector3 offset = new Vector3(spawnX, spawnY, spawnZ); Vector3 spawnLocation = crateSpawner.transform.position + offset; Crate newCrate = Instantiate(cratePrefab, spawnLocation, Quaternion.identity) as Crate; crateList.Add(newCrate); } // Limit number of crates that can be spawned if (crateList.Count > 1 && crateList.Count > maxCrates) { Crate toBeRemoved = crateList[0]; crateList.Remove(toBeRemoved); toBeRemoved.SetSelected(false); Destroy(toBeRemoved.gameObject); if (camMovement.GetTarget() == toBeRemoved.transform) { crateList[1].SetSelected(true); camMovement.FocusTarget(crateList[1].transform); } } }