Whats a good way to do Collision with 2D Rectangles? can someone give me a tip?
- by Javier
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
namespace BreakOut
{
class Field
{
public static Field generateField()
{
List<Block> blocks = new List<Block>();
for (int j = 0; j < BlockType.BLOCK_TYPES.Length; j++)
for (int i = 0; i < (Game1.WIDTH / Block.WIDTH); i++)
{
Block b = new Block(BlockType.BLOCK_TYPES[j], new Vector2(i * Block.WIDTH, (Block.HEIGHT + 2) * j + 5));
blocks.Add(b);
}
return new Field(blocks);
}
List<Block> blocks;
public Field(List<Block> blocks)
{
this.blocks = blocks;
}
public void Update(GameTime gameTime, Ball b)
{
List<Block> removals = new List<Block>();
foreach (Block o in blocks)
{
if (o.BoundingBox.Intersects(new Rectangle((int)b.pos.X, (int)b.pos.Y, Ball.WIDTH, Ball.HEIGHT))) //collision with blocks
{
removals.Add(o);
}
}
foreach(Block o in removals)
blocks.Remove(o); //removes the blocks, but i need help hitting one at a time
}
public void Draw(GameTime gameTime)
{
foreach (Block b in blocks)
b.Draw(gameTime);
}
}
}
My problem is that My collision in this sucks. I'm trying to add collision with a ball and hitting against a block and then one of the blocks dissapear.
The problem i'm having is: When the ball hits the block, it removes it all in one instance.
Please people don't be mean and say mean answers to me, im just in highschool, still a nooby and trying to learn more c#/XNA..