public override void collision(Levels.Level level) { foreach (Block b in level.Blocks) { if (Position.Intersects(b.Position)) { Block final = b; foreach (Block n in level.getAdjacentBlocks(b)) { if (Rectangle.Intersect(Position, n.Position).Width * Rectangle.Intersect(Position, n.Position).Height > Rectangle.Intersect(Position, final.Position).Width * Rectangle.Intersect(Position, final.Position).Height) final = n; } if (Rectangle.Intersect(Position, final.Position).Width >= Rectangle.Intersect(Position, final.Position).Height) { if (Rectangle.Intersect(Position, final.Position).Top == final.Position.Top) { Position = new Rectangle(Position.X, final.Position.Top - Position.Height, Position.Width, Position.Height); Velocity = new Vector2(Velocity.X, - 6); } else if (Rectangle.Intersect(Position, final.Position).Bottom == final.Position.Bottom) { Position = new Rectangle(Position.X, final.Position.Bottom, Position.Width, Position.Height); Velocity = new Vector2(Velocity.X, Velocity.Y * -1); ; } } else { if (Rectangle.Intersect(Position, final.Position).Left == final.Position.Left) { Velocity = new Vector2(-1, Velocity.Y); Position = new Rectangle(final.Position.Left - Position.Width, Position.Y, Position.Width, Position.Height); } else if (Rectangle.Intersect(Position, final.Position).Right == final.Position.Right) { Velocity = new Vector2(1, Velocity.Y); Position = new Rectangle(final.Position.Right, Position.Y, Position.Width, Position.Height); } } break; } } }