public void SnapToClosestFromTarget(Vector3 target) { if (!isMovable) { return; } //visualize tile your standing on occupiedTile.ShowTile(); occupiedTile.isOccupied = false; //move to next tile Transform closestTile = MovementGrid.Instance.GetClosestTileToPosition(target); var ctLocalPosition = closestTile.localPosition; ctLocalPosition += closestTile.parent.localPosition; //add the tile offset var transform1 = transform; transform1.localPosition = new Vector3(ctLocalPosition.x, transform1.localPosition.y, ctLocalPosition.z); //update occupied tile and hide it occupiedTile = closestTile.GetComponent <GridTile>(); occupiedTile.HideTile(); }