То, что я делал в аналогичной ситуации, заключалось в определении целевого пункта назначения (в пикселях), который был центром плитки, к которой он двигался, а затем каждое обновление перемещало блок ближе к этой цели.Только когда единица оказалась в центре плитки, она проверила новый пункт назначения.
Например: Единица A находится в координатах (0,0), которые в пикселях (32,32) (центрэта плитка) A движется к плитке (0,1), поэтому новый пункт назначения - (32,96).Каждое обновление устройство перемещается (0,1) пикселей вниз.Как только юнит является (32,96), который является центром фишки (0,1), он может затем решить, куда он будет двигаться дальше.