private void OnSplitBalls(int numOfBalls, BallSplitter parentSplitter, bool activate) { float _newScaleFactor = numOfBalls <= 4 ? currentBallScale * 0.8f : currentBallScale * 0.5f; _newScaleFactor = Mathf.Clamp(_newScaleFactor, gameParameters.minBallScale, gameParameters.maxBallScale); currentBallScale = _newScaleFactor; StartCoroutine(SpawnBalls(numOfBalls, parentSplitter, _newScaleFactor, activate)); }
public void Init(Vector3 pos, float scaleFactor, bool activate, BallSplitter splitter = null) { transform.localPosition = pos; parentSplitter = splitter; if (activate) { ActivateRigidbody(); } transform.localScale = new Vector3(scaleFactor, scaleFactor, scaleFactor); }
private IEnumerator SpawnBalls(int numOfBalls, BallSplitter parentSplitter, float _scaleFactor, bool activate = true) { for (int i = 0; i < numOfBalls; i++) { Vector3 spawnPos = new Vector3(); SpawnArea spawnArea = parentSplitter.spawnArea; float spawnPosZLBound = parentSplitter.transform.localPosition.z - spawnArea.rightBoundry; float spawnPosZRBound = parentSplitter.transform.localPosition.z + spawnArea.rightBoundry; float spawnPosZ = Random.Range(spawnPosZLBound, spawnPosZRBound); spawnPos = new Vector3(parentSplitter.transform.localPosition.x, parentSplitter.transform.localPosition.y, spawnPosZ); Transform _parent = currentLevel.transform; BallController _newBall = Instantiate(ballPrefab, spawnPos, Quaternion.identity, _parent).GetComponent <BallController>(); _newBall.Init(spawnPos, _scaleFactor, activate, parentSplitter); yield return(new WaitForSeconds(0.05f)); } }
protected override void DoPower(GameObject paddle) { BallSplitter splitter = paddle.GetComponent <BallSplitter>(); splitter.ball.Split(); }