### Godot version

4.1.x

### System information

Windows 11

### Issue description

When a Tilemap node is attached as a child node of PathFollower2D node, with `collision_animatable` on in the inspector, the tilemap will stuck at (0, 0) if you scripted the movement of the PathFollower2D node with `progress` changed; while the tiles run as usual if `collision_animatable` is **false**.
This is very weird because the documentation said that "you can make Animatablebody2D move with script", and I used but it feedbacked a strange result, which is unacceptable and unwilling to see.
More detailed info please see the minimal project

P.S. Only under PathFollower2D, you add a RemoteTransformer2D that linked to a Tilemap can the tiles move as usual with `collision_animatable` on.

### Steps to reproduce

In the minimal reproduction project:

1. Make the `collision_animatable` of Tilemap and run the project, and you can see the tilemap moves as usual
2. Then tick on the property and run the game again, in which you can see the tilemap stuck at (0, 0) permanently.

### Minimal reproduction project

[bug report.zip](https://github.com/godotengine/godot/files/12094949/bug.report.zip)
bool has_alternative_level_tile_proxy(int p_source_from, Vector2i p_coords_from, int p_alternative_from);
	void remove_alternative_level_tile_proxy(int p_source_from, Vector2i p_coords_from, int p_alternative_from);
	Array get_source_level_tile_proxies() const;
	Array get_coords_level_tile_proxies() const;
	Array get_alternative_level_tile_proxies() const;
	Array map_tile_proxy(int p_source_from, Vector2i p_coords_from, int p_alternative_from) const;
	void cleanup_invalid_tile_proxies();
	void clear_tile_proxies();
	
	int add_pattern(Ref<TileMapPattern> p_pattern, int p_index = -1);
	Ref<TileMapPattern> get_pattern(int p_index);
	void remove_pattern(int p_index);
	int get_patterns_count();
	
	RBSet<TerrainsPattern> get_terrains_pattern_set(int p_terrain_set);
	RBSet<TileMapCell> get_tiles_for_terrains_pattern(int p_terrain_set, TerrainsPattern p_terrain_tile_pattern);
	TileMapCell get_random_tile_from_terrains_pattern(int p_terrain_set, TerrainsPattern p_terrain_tile_pattern);
	
	Vector<Vector2> get_tile_shape_polygon();
	void draw_tile_shape(CanvasItem *p_canvas_item, Transform2D p_transform, Color p_color, bool p_filled = false, Ref<Texture2D> p_texture = Ref<Texture2D>());
	Vector<Point2> get_terrain_polygon(int p_terrain_set);
	Vector<Point2> get_terrain_peering_bit_polygon(int p_terrain_set, TileSet::CellNeighbor p_bit);
	void draw_terrains(CanvasItem *p_canvas_item, Transform2D p_transform, const TileData *p_tile_data);
	Vector<Vector<Ref<Texture2D>>> generate_terrains_icons(Size2i p_size);
	
	virtual void reset_state() override;
	TileSet();
	~TileSet();
};
class TileSetSource : public Resource {