コード例 #1
0
        public override void Continue()
        {
            base.Continue();
            for (var i = bullets.Count - 1; i >= 0; i--)
            {
                if (!Variables.StageBoundary.IsInBoundary(bullets[i].Position))
                {
                    // 画面外に出た弾を削除する
                    bullets[i].Destroy();
                    bullets.RemoveAt(i);
                }
            }

            for (var i = acceralatingBullets.Count - 1; i >= 0; i--)
            {
                if (!Variables.StageBoundary.IsInBoundary(acceralatingBullets[i].Position))
                {
                    // 画面外に出た加速する弾を削除する
                    acceralatingBullets[i].Destroy();
                    acceralatingBullets.RemoveAt(i);
                }
            }

            if (CurrentFrame >= 2000)
            {
                return;
            }

            var player   = Variables.UserPosition.Get();
            var boundary = Variables.StageBoundary.Get();

            if (CurrentFrame % 12 == 0)
            {
                acceralatingBullets.Add(Factory.Generate(false, 0.0f, boundary.height / 2.0f, new Math.DegreesToRadius(currentDegrees).Radius, 0.0f));
                currentDegrees += 9;
            }
            acceralatingBullets.ForEach(b => b.Speed += 0.025f);

            if (CurrentFrame % 250 == 0)
            {
                var span = 12;
                for (var deg = 0; deg <= 360; deg += span)
                {
                    var offsetPositionA = new Math.CircleOffset(player.transform.position.x, player.transform.position.y, 30.0f, deg);
                    var degreeToPlayer  = new Math.RadiusAToB(
                        player.transform.position.x,
                        player.transform.position.y,
                        offsetPositionA.Position.x,
                        offsetPositionA.Position.y
                        );

                    bullets.Add(Factory.Generate(true, offsetPositionA.Position.x, offsetPositionA.Position.y, degreeToPlayer.Radius, 0.1f));
                }
            }
        }
コード例 #2
0
        public override void Continue()
        {
            base.Continue();

            for (var i = bullets.Count - 1; i >= 0; i--)
            {
                if (!Variables.StageBoundary.IsInBoundary(bullets[i].Position))
                {
                    // 画面外に出た弾を削除する
                    bullets[i].Destroy();
                    bullets.RemoveAt(i);
                }
            }

            if (CurrentFrame >= 500)
            {
                return;
            }

            //==================================================
            // 左から飛んでくる弾
            //==================================================
            var boundary = Variables.StageBoundary.Get();
            var player   = Variables.UserPosition.Get();

            if (CurrentFrame % 20 == 0)
            {
                var baseRadius = new Math.RadiusAToB(
                    player.transform.position.x,
                    player.transform.position.y,
                    boundary.xMax,
                    boundary.yMax
                    ).Radius + new Math.DegreesToRadius(2).Radius;

                bullets.Add(Factory.Generate(false, boundary.xMax, boundary.yMax, baseRadius, 1.0f));
                bullets.Add(Factory.Generate(false, boundary.xMax, boundary.yMax, baseRadius + new Math.DegreesToRadius(10).Radius, 1.0f));
                bullets.Add(Factory.Generate(false, boundary.xMax, boundary.yMax, baseRadius + new Math.DegreesToRadius(-10).Radius, 1.0f));
            }

            //==================================================
            // 右から飛んでくる弾
            //==================================================
            if (CurrentFrame >= 40 && CurrentFrame % 20 == 0)
            {
                var baseRadius = new Math.RadiusAToB(
                    player.transform.position.x,
                    player.transform.position.y,
                    boundary.xMin,
                    Variables.StageBoundary.Get().yMax
                    ).Radius + new Math.DegreesToRadius(-2).Radius;

                bullets.Add(Factory.Generate(false, boundary.xMin, boundary.yMax, baseRadius, 1.0f));
                bullets.Add(Factory.Generate(false, boundary.xMin, boundary.yMax, baseRadius + new Math.DegreesToRadius(10).Radius, 1.0f));
                bullets.Add(Factory.Generate(false, boundary.xMin, boundary.yMax, baseRadius + new Math.DegreesToRadius(-10).Radius, 1.0f));
            }

            //==================================================
            // 真ん中から飛んでくる弾
            //==================================================
            if (CurrentFrame >= 200 && CurrentFrame % 15 == 0)
            {
                var centerx = 0.0f;

                var radius = new Math.RadiusAToB(
                    player.transform.position.x,
                    player.transform.position.y,
                    centerx,
                    Variables.StageBoundary.Get().yMax
                    ).Radius;
                bullets.Add(Factory.Generate(true, centerx, boundary.yMax, radius, 1.0f));
            }
        }