Oh wow, I didn't know you could do that. I use Godot too. I won't make you share your code, I see there are some guides on how to do what you described so I'll take a look at them. Thanks!
Viewing post in Blocky and Boxy jam comments
To give more details, I imported each level as an Image instead of a texture, with the white parts being transparent, and used Bitmap.create_from_image_alpha() to generate the bitmap. I then used set_bit_rect() to subtract out the area of the non-active player, then opaque_to_polygons() to generate the collision polygons. As for why I imported each level as an Image instead of a BitMap directly, it's because I can use Texture. create_from_image() to generate the background sprite for the level, so each level only requires one PNG file as a resource.