By the looks of your collision rectangle you probably understand this but I will explain why grid aligned games can be awkward
In a typical collision engine 2 objects touching counts as a collision, even if it's a rare occurrence that should be the case.
Most movement behaviours work along the lines of "If I move here will I be colliding? No, okay then move me there. Otherwise, I'll stay here". So when you have two objects moving exactly next to each other ( such as in grid aligned games ) it will appear to the object that it's path is obstructed, even though their overlap is technically 0 they are still touching each other.
Some things you might want to check are:
- your blocks are positioned at integer spacing
- your blocks have an integer size
- your blocks are not rotated
- your collision rect is slightly smaller than the block
- the size of the texture for your block sprite is the same as your instances ( prevents resizing of your collision rect )