This is one way to do it
Give an object Tween behavior
On any of the movement inputs,
check if Object is NOT tweening with tag "move" (you want to make sure the object doesn't receive input while it's actually moving, otherwise it will tween while it's tweening, resulting in skips)
If it's NOT already tweening with tag "move,"
then use the Tween 2 properties action to set it's position like so:
(this would be for a diagonal up and right movement)
X: tilemap.snapx(object.x + 32)
Y: tilemap.snapy(object.y - 32)
tag: "move"
Also set up an On Finished: tween tag "move" with the action
set object position to
X: tilemap.snapx(object.x)
Y: tilemap.snapy(object.y)
(just incase it ends up unaligned with the grid somehow, this will realign it)