public void Update(double dt) { Current = this; objects.Refresh(); if (!player.Alive) { rSpeed = Math.Min(rSpeed + 0.01 * dt, 0.1); cam.Rotation += rSpeed * dt; } dt *= dtK; if (!player.Alive) { dtK = Math.Max(dtK - dtkspeed * dt, mindtk); } curTime += dt; cam.Position += (player.Position - cam.Position) * Math.Min(dt * camSpeed, 1); const double dist = 25; posGroup = new PosGroup<SpaceObject>( player.Position.X - dist, player.Position.Y - dist, player.Position.X + dist, player.Position.Y + dist); foreach (var o in objects) { posGroup.Add(o, o.Position); } objects.Update(dt); UpdateAsteroids(dt); UpdateBullets(dt); UpdateClouds(dt); UpdatePhysics(dt); UpdateExplosions(dt); foreach (var o in objects.Where(o => !o.Alive)) objects.Remove(o); }
public override void KeyDown(Key key) { base.KeyDown(key); if (key == Key.Space) world.Add(new Asteroid()); if (key == Key.F2) world = new World(); if (key == Key.Escape) Close(); }