/// <summary> /// Allows the game component to perform any initialization it needs to before starting /// to run. This is where it can query for any required services and load content. /// </summary> public override void Initialize() { // TODO: Add your initialization code here _spriteBatch = new SpriteBatch(Game.GraphicsDevice); _myBall = new Ball(); _myBall.VelocityFromAngle(180.0f * (float)Math.PI / 180.0f, 800); _myBall.Circle.Position.X = 180; _myBall.Circle.Position.Y = 100 + 44; _levelBricks = new List<AABB>(); _levelBricks.Add(new AABB(0, 0, 1, Game.Window.ClientBounds.Height)); _levelBricks.Add(new AABB(0, Game.Window.ClientBounds.Height, Game.Window.ClientBounds.Width, 1)); _levelBricks.Add(new AABB(Game.Window.ClientBounds.Width, 0, 1, Game.Window.ClientBounds.Height)); _levelBricks.Add(new AABB(0, 0, Game.Window.ClientBounds.Width, 1)); //_levelBricks.Add(new AABB(200, 100, 20, 65)); //_levelBricks.Add(new AABB(200, 220, 20, 20)); //_levelBricks.Add(new AABB(300, 300, 20, 20)); //_levelBricks.Add(new AABB(20, 20, 20, 20)); //Random r = new Random(); //for (int i = 0; i < 40; ++i) //{ // _levelBricks.Add(new AABB(r.Next(0, Game.Window.ClientBounds.Width), r.Next(0, Game.Window.ClientBounds.Height), r.Next(20, 30), r.Next(20, 30))); //} _prevKeyState = Keyboard.GetState(); base.Initialize(); }
private void UpdateBall(Ball ball, float dt) { if (_ballPaused) return; if (_incBallSpeed) { ball.Velocity *= 1.1f; //ball.Velocity = Vector2.Clamp(ball.Velocity, new Vector2(-960.0f, -960.0f), new Vector2(960.0f, 960.0f)); _incBallSpeed = false; } if (_decBallSpeed) { ball.Velocity *= 0.9f; //ball.Velocity = Vector2.Clamp(ball.Velocity, new Vector2(-960.0f, -960.0f), new Vector2(960.0f, 960.0f)); _decBallSpeed = false; } ball.LastPosition = ball.Circle.Position; ball.Circle.Position += ball.Velocity * dt; //Console.WriteLine("old: " + ball.LastPosition); //Console.WriteLine("current: " + ball.Circle.Position); ApplyCollision(); //Console.WriteLine("new: " + ball.Circle.Position); }
private void DrawBall(Ball ball) { Vector2 origin; origin.X = ball.Circle.Radius; origin.Y = ball.Circle.Radius; _spriteBatch.Begin(); _spriteBatch.Draw(_ballTexture, ball.Circle.Position, null, Color.White, 0, origin, 1, SpriteEffects.None, 0); _spriteBatch.Draw(_vectorTexture, ball.Circle.Position, null, Color.White, (float)Math.Atan2(ball.Velocity.Y, ball.Velocity.X), origin, 1, SpriteEffects.None, 0); _spriteBatch.End(); }