示例#1
0
        private void Shoot()
        {
            var w = (_.Player.Position - P).Normalized;
            var n = 1;
            int _bullet;
            var spray = Danmaku.Spray(w, Mathf.PI, 20);

            foreach (var v in spray)
            {
                if (n == 1 || n % _.Difficulty.Choose(4, 4, 4, 3) == 0)
                {
                    _bullet = _.Difficulty.Choose(4, 6, 8, 12);
                }
                else
                {
                    _bullet = _.Difficulty.Choose(2, 3, 4, 4);
                }

                var line = Danmaku.Line(v, 0.5f, 1f, _bullet);
                foreach (var v1 in line)
                {
                    _.World.Spawn(
                        new LinearRoundBullet( // вместо раундбуллета стрелки сделать
                            P,
                            2 * v1,
                            Color.Red,
                            Color.Red
                            )
                        );
                }

                n++;
            }
        }
        private void Explode()
        {
            Despawn();

            int ringSize = 20;
            int lineSize = 2;

            foreach (var v in Danmaku.Ring(XY.Up, ringSize))
            {
                foreach (var w in Danmaku.Line(v, 1f, 1.5f, lineSize))
                {
                    The.World.Spawn(new PetalBullet(_target, w, Color.Yellow));
                }
            }
        }
示例#3
0
        public override void Update(int t)
        {
//            if (t % 60 >= 15) return;
            if (t % 6 != 0)
            {
                return;
            }
            var v = new XY(t * Mathf.phiAngle / 180);

            foreach (var spawn in _spawns)
            {
                foreach (var w in Danmaku.Line(v, 1, 2, 2))
                {
                    The.World.Spawn(new Bullet(spawn, w, Color.Blue));
                }
            }
        }
示例#4
0
        private void SpawnSmile(XY p, XY v, Color maincolor, Color borderColor)
        {
            var w     = v.Normalized;
            var line  = Danmaku.Line(w, 0, 40, 5);
            var spray = Danmaku.Spray(90 * w, Mathf.PI / 3, 9);

            var world = _.World;

            foreach (var offset in line)
            {
                world.Spawn(new VerticalBounceRoundBullet(p + 20 * w.Rotated90CW() + offset, v, maincolor, maincolor, 4));
                world.Spawn(new VerticalBounceRoundBullet(p - 20 * w.Rotated90CW() + offset, v, maincolor, maincolor, 4));
            }
            foreach (var offset in spray)
            {
                world.Spawn(new VerticalBounceRoundBullet(p + offset, v, maincolor, maincolor, 4));
            }
        }
 private void AlternateShoot(int t)
 {
     {
         var w    = (_.Player.Position - P).Normalized;
         var line = Danmaku.Line(w, 1, 2, _.Difficulty.Choose(9999, 9999, 3, 4));
         foreach (var v in line)
         {
             _.World.Spawn(
                 new LinearRoundBullet(
                     P,
                     v,
                     Color.Blue,
                     Color.Blue
                     )
                 );
         }
     }
 }
示例#6
0
        private void InicialiseArena()
        {
            for (int i = 0; i < 5; i++)
            {
                var w    = XY.Down.WithLength(World.Box.Bottom / _delay);
                var line = Danmaku.Line(w, 0.083f, 1, 12);
                foreach (var v in line)
                {
                    _.World.Spawn(
                        new StoppingLinearRoundBullet(
                            new XY(0 + World.Box.Right / 5 * i, 0),
                            v,
                            Color.Blue,
                            Color.Blue,
                            _bulletsize,
                            _delay
                            ));
                }
            }

            for (int i = 0; i < 6; i++)
            {
                var w    = XY.Right.WithLength(World.Box.Right / _delay);
                var line = Danmaku.Line(w, 0.1f, 1, 10);
                foreach (var v in line)
                {
                    _.World.Spawn(
                        new StoppingLinearRoundBullet(
                            new XY(0, World.Box.Bottom / 12 + World.Box.Bottom / 6 * i),
                            v,
                            Color.Blue,
                            Color.Blue,
                            _bulletsize,
                            _delay
                            ));
                }
            }
        }