The randomized change in the vector seems to work for the most part, using the 0.5 setting for randomFactor, but I have seen a strange behavior twice now. I have a line unbreakable blocks below the breakable ones and twice now the ball has literally tunneled through the wall. Both times it was coming from above, but I think that is just a coincidence.
The last time I had it bouncing back and forth almost vertically, between the top of the play area and the unbreakable block line, having cleared out all the blocks in between already. You could see it go very slightly at an angle on some of the bounces and the speed changed too. Sometimes it seems to speed up (more often than not) and sometimes it goes a bit slower. One time it came down and went right through the unbreakable block and (of course) hit the lose collider.
I think the code is simulating quantum tunneling behavior in the game world!
I am guessing this is because the random vector change being done makes it travel in the direction opposite of where it should go, putting it past the collider boundary of the block. The collider probably only looks for something coming from outside the boundary, so it ignores the ball when it hits the inside of the boundary on the far side of the block.
Maybe we need to provide a little more guidance to what direction we “push” the ball with our random tweak to its path?