Exemple #1
1
        public override void Update(int t)
        {
            _p = _p0 + t * _v0 + new XY(0, t * t * _a * 0.5f);

            if (t > 0 && !World.Box.ContainsPoint(_p))
            {
                Despawn();
                return;
            }

            if (t % 15 == 0)
            {
                The.World.Spawn(new PetalBullet(_p, (The.Player.Position - _p).WithLength(2), Color.Magenta));
                foreach (var v in Danmaku.Spray(new XY(0, 1.5f), Mathf.PI / 6, 2))
                {
                    The.World.Spawn(new PetalBullet(_p, v, Color.Yellow));
                }
            }
        }
Exemple #2
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 Split()
 {
     Despawn();
     foreach (var v in Danmaku.Spray(_v, /*2 * */ Mathf.PI /* - Mathf.phiAngle*/, _rank))
     {
         The.World.Spawn(new RecursiveBullet(_p, v, _color, _rank - 1));
     }
 }
 private void Explode()
 {
     Despawn();
     foreach (var v in Danmaku.Spray(-_v, Mathf.PI / 2, 3))
     {
         The.World.Spawn(new Arrow(_p, v / 4, Color.Red));
     }
 }
 private void Shoot(int t)
 {
     if (t % 5 != 0)
     {
         return;
     }
     foreach (var p in Danmaku.Spray(new XY(0, 30), Mathf.PI / 3, 2))
     {
         foreach (var q in Danmaku.Spray(new XY(0, -30), Mathf.PI / 3, 2))
         {
             _.World.Spawn(new PlayerBullet(_p + p, (q - p).WithLength(10)));
         }
     }
 }
Exemple #6
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));
            }
        }