void CreateScoringBalls(Transform root, Transform lastScoringParent) { foreach (Transform child in root) { if (child.GetComponent <AttachedBall>()) { GameObject ball; if (ComboValid(root, child)) { ball = PoolManager.Instance.GetPoolByRepresentative(scoringBallChildPrefab).GetPooled(); ball.transform.parent = lastScoringParent; } else { ball = PoolManager.Instance.GetPoolByRepresentative(scoringBallPrefab).GetPooled(); ScoringBall sb = ball.GetComponent <ScoringBall>(); sb.lifeTime = Random.Range(0.5f, 1f); sb.speed = Random.Range(10f, 20f); sb.rotSpeed = Random.Range(180f, 360f); sb.travelDir = Quaternion.AngleAxis(Random.Range(-45f, 45f), Vector3.forward) * (ball.transform.position - root.transform.position).normalized; } ball.transform.position = child.position; ball.transform.rotation = child.rotation; ball.GetComponent <SpriteRenderer>().sprite = child.GetComponent <SpriteRenderer>().sprite; ball.SetActive(true); ball.SendMessage("Arm", SendMessageOptions.DontRequireReceiver); CreateScoringBalls(child, ball.transform); } } }
public override void Destroy() { PoolableTrackingParticleBurst particles = PoolManager.Instance. GetPoolByRepresentative(particleBurstPrefab).GetPooled().GetComponent <PoolableTrackingParticleBurst>(); particles.transform.position = transform.position; particles.gameObject.SetActive(true); particles.GetComponent <ParticleSystem>().startColor = ScoringBall.GetParticleColor(GetComponent <SpriteRenderer>().sprite); particles.SetTarget(GameObject.Find("PlayerBall").transform); particles.Play(); base.Destroy(); }