### 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)
Vector2i get_tile_animation_separation(const Vector2i p_atlas_coords) const;
	void set_tile_animation_speed(const Vector2i p_atlas_coords, real_t p_speed);
	real_t get_tile_animation_speed(const Vector2i p_atlas_coords) const;
	void set_tile_animation_mode(const Vector2i p_atlas_coords, const TileSetAtlasSource::TileAnimationMode p_mode);
	TileSetAtlasSource::TileAnimationMode get_tile_animation_mode(const Vector2i p_atlas_coords) const;
	void set_tile_animation_frames_count(const Vector2i p_atlas_coords, int p_frames_count);
	int get_tile_animation_frames_count(const Vector2i p_atlas_coords) const;
	void set_tile_animation_frame_duration(const Vector2i p_atlas_coords, int p_frame_index, real_t p_duration);
	real_t get_tile_animation_frame_duration(const Vector2i p_atlas_coords, int p_frame_index) const;
	real_t get_tile_animation_total_duration(const Vector2i p_atlas_coords) const;
	
	int create_alternative_tile(const Vector2i p_atlas_coords, int p_alternative_id_override = -1);
	void remove_alternative_tile(const Vector2i p_atlas_coords, int p_alternative_tile);
	void set_alternative_tile_id(const Vector2i p_atlas_coords, int p_alternative_tile, int p_new_id);
	virtual bool has_alternative_tile(const Vector2i p_atlas_coords, int p_alternative_tile) const override;
	int get_next_alternative_tile_id(const Vector2i p_atlas_coords) const;
	virtual int get_alternative_tiles_count(const Vector2i p_atlas_coords) const override;
	virtual int get_alternative_tile_id(const Vector2i p_atlas_coords, int p_index) const override;
	
	TileData *get_tile_data(const Vector2i p_atlas_coords, int p_alternative_tile) const;
	
	Vector2i get_atlas_grid_size() const;
	Rect2i get_tile_texture_region(Vector2i p_atlas_coords, int p_frame = 0) const;
	bool is_position_in_tile_texture_region(const Vector2i p_atlas_coords, int p_alternative_tile, Vector2 p_position) const;
	
	Ref<Texture2D> get_runtime_texture() const;
	Rect2i get_runtime_tile_texture_region(Vector2i p_atlas_coords, int p_frame = 0) const;
	~TileSetAtlasSource();
};
class TileSetScenesCollectionSource : public TileSetSource {