public void SpawnBirbs(Vector3 position) { var numBirbs = FlatRedBallServices.Random.Next(MinBirbs, MaxBirbs); for (int i = 0; i < numBirbs; i++) { var birb = MenuBirbFactory.CreateNew(this.LayerProvidedByContainer); MenuBirbList.Add(birb); birb.SetRandomAnimationFrame(); //Position birb.Position = position; //Initial Velocity var randDeg = FlatRedBallServices.Random.Between(-MaxFlyVariationDeg, MaxFlyVariationDeg); var newAngleDeg = DefaultFlyAngleDeg + randDeg; var newAngleRad = newAngleDeg * (Math.PI / 180); Vector3 birdVector = new Vector3((float)Math.Cos(newAngleRad), (float)Math.Sin(newAngleRad), Z) * MaxSpeed; birb.Velocity = birdVector; //X velocity to fly off screen. var sign = FlatRedBallServices.Random.Next(0, 2) * 2 - 1; birb.XAcceleration = BirbXAccel * sign; birb.Drag = FlatRedBallServices.Random.Between(MinBirbDrag, MaxBirbDrag); } }
private void ManageBirbs() { for (int i = MenuBirbList.Count - 1; i > -1; i--) { var birb = MenuBirbList[i]; if (birb.X < Camera.Main.AbsoluteLeftXEdgeAt(birb.Z) || birb.X > Camera.Main.AbsoluteRightXEdgeAt(birb.Z)) { birb.Destroy(); MenuBirbList.Remove(birb); } } }