private void UpdateInput(EngineTime time) { var direction = Vector2.Zero; if (this.Engine.Keyboard.State.IsKeyDown(Keys.A)) { direction -= Vector2.UnitX; } if (this.Engine.Keyboard.State.IsKeyDown(Keys.D)) { direction += Vector2.UnitX; } if (this.Engine.Keyboard.State.IsKeyDown(Keys.W)) { direction += Vector2.UnitY; } if (this.Engine.Keyboard.State.IsKeyDown(Keys.S)) { direction -= Vector2.UnitY; } if (direction != Vector2.Zero) { direction.Normalize(); } var attributes = new RobotTraits(); powerups.RemoveAll((x) => x.ShouldRemove); foreach (var powerup in powerups) { powerup.Process(attributes); } direction *= attributes.AccelerationRate; this.body.LinearVelocity += direction * MaxLinearAcceleration * time.Elapsed; }
public void Process(RobotTraits robot) { robot.AccelerationRate *= 2f; }