//Reset the balloon for reuse public void resetBalloon(GameObject obj) { BalloonCollider balCol = obj.GetComponentInChildren <BalloonCollider> (); balCol.gameObject.transform.localPosition = new Vector3(0, 0, 0); balCol.popped = false; balCol.collided = false; balCol.updated = false; balCol.alreadyOff = false; balCol.bomb = false; obj.transform.SetParent(this.gameObject.transform); obj.SetActive(false); }
//Set up a row of balloons using pooled objects instead of instantiating new prefabs void createBalloonsRecycle(int row, int color, string name, int points, bool reset) { bool placeBomb = false; Color rowColor; int balloonScore; //Create the color for the pop particle effect if (color == 1) { rowColor = new Color(240 / 255f, 105 / 255f, 2 / 255f, 1f); //Orange } else if (color == 2) { rowColor = new Color(237 / 255f, 251 / 255f, 0f, 1f); //Yellow } else if (color == 3) { rowColor = new Color(61 / 255f, 255 / 255f, 36 / 255f, 1f); //Green } else if (color == 4) { rowColor = new Color(2 / 255f, 43 / 255f, 240 / 255f, 1f); //Blue } else if (color == 5) { rowColor = new Color(167 / 255f, 0f, 255 / 255f, 1f); //Purple } else { rowColor = new Color(251 / 255f, 5 / 255f, 0f, 1f); //Red } offset = .82f; //Balloon spacing GameObject start, target; if (row == 1) { start = start1; target = target1; balloonScore = 30; // + (4 * controlScript.speedLevel); } else if (row == 2) { start = start2; target = target2; balloonScore = 10; // + (4 * controlScript.speedLevel); } else { start = start3; target = target3; balloonScore = 20; // + (4 * controlScript.speedLevel); } if (reset) { resetRowObjects(row); controlScript.updateScore(points); //Update Score, bonus row clear points } for (int i = 0; i < numBalloons; i++) { GameObject newBalloon = PoolingManager.pooler.getPooledObject(5); float spacing = i * offset; if (row == 3) //For balloons moving right to left, spacing is negative { spacing = -spacing; } if (newBalloon != null) //If the gameobject returned from the pooler is available, use it as the next balloon { BalloonCollider balCol = newBalloon.GetComponentInChildren <BalloonCollider> (); BalloonAnchor balAnchor = newBalloon.GetComponent <BalloonAnchor> (); newBalloon.SetActive(true); newBalloon.transform.SetParent(null); if (i == 0) //Position the balloons { newBalloon.transform.position = new Vector2(start.transform.position.x, start.transform.position.y); } else { newBalloon.transform.position = new Vector2(start.transform.position.x + spacing, start.transform.position.y); } //Place a bomb instead of balloon if needed if (bomb && i == bombIndex) { balCol.bomb = true; bomb = false; placeBomb = true; } //Initiallize variables balCol.turnOnSafe(); newBalloon.name = name + i.ToString() + " anchor"; balCol.name = name + i.ToString(); balCol.row = row; balCol.index = i; balCol.color = rowColor; balCol.pointValue = balloonScore; balCol.poppedByExplosion = false; balAnchor.begin = start; balAnchor.target = target; //Set the dispay to bomb animation or the correct color balloon if (placeBomb) { balCol.anim.SetInteger("State", 7); placeBomb = false; } else { balCol.anim.SetInteger("State", color); } //Save the balloon info to PlayerPrefs if (!PlayerPrefs.HasKey(name + i.ToString())) { PlayerPrefs.SetInt(name + i.ToString(), 1); } //Insert the new balloon into the row array if (row == 1) { row1 [i] = newBalloon; } else if (row == 2) { row2 [i] = newBalloon; } else { row3 [i] = newBalloon; } } } }