I've figured a somewhat hacky solution that could turn sprites into a bunch of convex shapes using mesh instances in 2D space:
Create collision shapes from sprites in Godot 3.0
- Create a sprite and assign its texture.
- Select the node sprite, at the top panel of the viewport click
- In the popup menu, press
Convert to 2D Mesh.
- In the window dialog, press
Create 2D Mesh button.
Now you can get faces from the mesh, convert those faces into a bunch of
ConvexPolygonShape2D (which are triangles), and add those directly to a physics body.
# Get triangles points from mesh
var points = $MeshInstance.mesh.get_faces()
var idx = 0
var shapes = 
while idx < points.size():
# Each three vertices represent one triangle
# Converts automatically from Vector3 to Vector2!
var tri_points = PoolVector2Array([points[idx], points[idx + 1], points[idx + 2]])
# Create an actual triangle shape
var tri_shape = ConvexPolygonShape2D.new()
tri_shape.points = tri_points
idx += 3
for sh in shapes:
# Add created shapes to this collision body
# `0` indicates the first shape owner which is `CollisionShape2D`