Movement on a grid with block-like objects

I’m making a 3D game with a top down view (so it looks like a 2D game). I have objects moving on a grid (say by 1 unit each time) which have to interact (the player is supposed to only push the objects).

I have a problem with colliders. Game objects are the same dimension of the grid (cube of 1 unit x 1 unit x 1 unit) but whenever the player moves by the side of an object it moves it (as if there were friction among the player collider and the block collider).

I tried to reduce colliders dimensions but in this way the objects do not align themselves along the grid. Is there a way to avoid it?

If the gameplay is purely discrete, in other words you don’t want to move three fourths of a tile or stop in between or squeeze in between the crates or anything else fuzzy and thus contradicting with discreteness, I would strongly recommend to not involve physics at all. Simply create a tiny state machine a’la moving/idling for your character. On button press simply set the character’s and all crates’ in front states to moving and programmatically move the whole bunch on timer until they reach the new position. Of course that implies you create your own home-brew discrete pseudo-collision based on integer indices. Sorta Tetris. But you will have outstanding control over things and not rely physics glitches. You will for instance be able to have integer weights for crates, so that the character would need to drink a potion to become stronger and be able to push it. Using physics in this case is simply an overkill and only introduces problems that you don’t have to solve at all.

Think of your game as an integer-driven skeleton 2D gameplay simply decorated with 3D graphics.