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)); } } }
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))); } } }
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)); } }