// This method will explode an asteroid public void Explode(OTObject o, CBullet3 bullet) { // Determine how many debree has to be be created int blocks = 2 + (int)Mathf.Floor(Random.value * 2); // Create debree for (int b = 0; b < blocks; b++) { // Shrink asteroid's rect to act as the random position container // for the debree Rect r = new Rect( o.rect.x + o.rect.width / 4, o.rect.y + o.rect.height / 4, o.rect.width / 2, o.rect.height / 2); // Create a debree that is relatively smaller than the asteroid that was detroyed OTAnimatingSprite a = RandomBlock(r, 0.6f, 0.75f, o); // Add this debree to the bullet telling the bullet to ignore this debree // in this update cycle - otherwise the bullet explosions could enter some // recursive 'dead' loop creating LOTS of debree bullet.AddDebree(a); // Recusively explode 2 asteroids if they are big enough, to get a nice // exploding debree effect. if (b < 2 && a.size.x > 30) { Explode(a, bullet); } } // Notify that this asteroid has to be destroyed OT.DestroyObject(o); }
bool initialized = false; // initialization notifier #endregion Fields #region Methods // This method will explode an asteroid public void Explode(OTObject o, CBullet3 bullet) { // Determine how many debree has to be be created int blocks = 2 + (int)Mathf.Floor(Random.value * 2); // Create debree for (int b = 0; b < blocks; b++) { // Shrink asteroid's rect to act as the random position container // for the debree Rect r = new Rect( o.rect.x + o.rect.width / 4, o.rect.y + o.rect.height / 4, o.rect.width / 2, o.rect.height / 2); // Create a debree that is relatively smaller than the asteroid that was detroyed OTAnimatingSprite a = RandomBlock(r, 0.6f, 0.75f, o); // Add this debree to the bullet telling the bullet to ignore this debree // in this update cycle - otherwise the bullet explosions could enter some // recursive 'dead' loop creating LOTS of debree bullet.AddDebree(a); // Recusively explode 2 asteroids if they are big enough, to get a nice // exploding debree effect. if (b < 2 && a.size.x > 30) Explode(a, bullet); } // Notify that this asteroid has to be destroyed OT.DestroyObject(o); }