public override void Update(int t) { var world = The.World; _angle = XY.DirectionAngle(_p, The.Player.Position); _r = XY.Distance(_p, The.Player.Position); for (int i = 0; i < 8; i++) { world.Spawn( new DeathRay( _p, 0 + Mathf.PI / _danmakuInterval * t + Mathf.PI / 4 * i, 3, Color.Red ) ); } if (t % 6 == 0) { for (int i = 0; i < 8; i++) { The.World.Spawn( new FadePetalBullet( new XY(_p.X + Mathf.Cos(Mathf.PI / _danmakuInterval * t + i * Mathf.PI / 4) * _r, _p.Y + Mathf.Sin(Mathf.PI / _danmakuInterval * t + i * Mathf.PI / 4) * _r), XY.DirectionAngle(_p, new XY(_p.X + Mathf.Cos(Mathf.PI / _danmakuInterval * t + i * Mathf.PI / 4) * _r, _p.Y + Mathf.Sin(Mathf.PI / _danmakuInterval * t + i * Mathf.PI / 4) * _r)), Color.Red, Mathf.PI / 4 / (Mathf.PI / _danmakuInterval) ) ); } } }
protected override void Update(int t) { if (t == 0) { for (int i = 0; i <= _n; i++) { if (XY.Distance(new XY(_p.X + Mathf.Cos(i * 2 * Mathf.PI / _n + _random) * _r, _p.Y + Mathf.Sin(i * 2 * Mathf.PI / _n + _random) * _r), _.Player.Position) > 12) { _.World.Spawn( new DelayedLinearRoundBullet( new XY(_p.X + Mathf.Cos(i * 2 * Mathf.PI / _n + _random) * _r, _p.Y + Mathf.Sin(i * 2 * Mathf.PI / _n + _random) * _r), new XY(Mathf.Cos(i * (2 * Mathf.PI / _n) + _random), Mathf.Sin(i * (2 * Mathf.PI / _n) + _random)), Color.Blue, Color.Blue, 5, _delay ) ); } } } if (t == _delay) { _.World.Spawn(new Blast(_p, _r, _delay)); Despawn(); } }
protected override void Update(int t) { if (_r > XY.Distance(_p, _.Player.Position)) { _r = _r - 0.9f; } else { _r = _r + 0.9f; } var world = _.World; if (t % 6 == 0) { world.Spawn(new Blast(new XY(_p.X + _r * Mathf.Cos(_angle), _p.Y + _r * Mathf.Sin(_angle)), _radius, 150)); } if (t % 18 == 0) { foreach (var v in Danmaku.Cloud(1f, 5)) { world.Spawn(new LinearRoundBullet( new XY(_p.X + _r * Mathf.Cos(_angle), _p.Y + _r * Mathf.Sin(_angle)), v, Color.Yellow, Color.Red, 5 ) ); } } _angle = _angle + _deltaAngle; }
// Get the center of the closest room inside this QuadTree XY GetClosestRoomCenter(XY closeToThis) { // Check room if (room != null) { return(room.boundary.center); } // Take a random child if (HasChildren() == false) { return(null); } float dist1 = XY.Distance(northWest.GetClosestRoomCenter(closeToThis), closeToThis); float dist2 = XY.Distance(northEast.GetClosestRoomCenter(closeToThis), closeToThis); float dist3 = XY.Distance(southWest.GetClosestRoomCenter(closeToThis), closeToThis); float dist4 = XY.Distance(southEast.GetClosestRoomCenter(closeToThis), closeToThis); int r = 1; float closest = dist1; if (dist2 < closest) { r = 2; closest = dist2; } if (dist3 < closest) { r = 3; closest = dist3; } if (dist4 < closest) { r = 4; closest = dist4; } switch (r) { case 1: return(northWest.GetClosestRoomCenter(closeToThis)); case 2: return(northEast.GetClosestRoomCenter(closeToThis)); case 3: return(southWest.GetClosestRoomCenter(closeToThis)); case 4: return(southEast.GetClosestRoomCenter(closeToThis)); } return(null); }
private bool Check(XY a, int index) { for (int i = 0; i < _n; i++) { if (XY.Distance(a, coordinate[i]) < 2 * _r) { return(false); } } coordinate[index] = a; return(true); }
protected override void Update(int t) { P = P + _v * (1 + A * t); if (XY.Distance(P, _p) < XY.Distance(_.Player.Position, _p)) { _v = new XY((_.Player.Position - _p).Angle); } if (t % 3 == 0) { _.World.Spawn(new Blast ( P + P.Rotated90CW().Normalized *_.Random.Float(-35, 35), _.Random.Float(3, 10), 120)); } if (t > 30 && !Geom.CircleOverBox(new Circle(P, 1), World.Box)) { Despawn(); } }
public DemomanSignWormblasterTheFirst(XY p) { _p = p; _r = XY.Distance(_p, _.Player.Position); }
public DelayedExplosin() { var world = _.World; for (int i = 0; i < _n; i++) { coordinate[i] = new XY(-9000, -9000); } for (int i = 0; i < _n; i++) { bool g = false; int attempts = 0; while (g == false && attempts < 25) { var a = _.Random.Point(World.Box); g = Check(a, i); attempts++; } } for (int j = 0; j < _n; j++) { world.Spawn(new DDEBullet(_.Player.Position, new XY(XY.DirectionAngle(_.Player.Position, coordinate[j])).WithLength(XY.Distance(_.Player.Position, coordinate[j])) / 60)); } }