You might be able to use CSG nodes in Godot as a collision shape.
CSG nodes have collision built in that you can enable through the use_collision
property if you need the collision to be static, like a StaticBody node. If you want to use the collision shapes with other nodes, you might need to manually convert the mesh returned by the CSG node into a collision shape.
You can use the get_meshes
function (documentation) to get the finished CSG shape. You can then convert the mesh returned by the get_meshes
function into a collision Shape using the create_convex_shape
and/or create_trimesh_shape
function (documentation). Then you could take the Shape returned and set that as the shape in a StaticBody, KinematicBody, and/or RigidBody node.
That said, I have not tried it myself so it is mostly theoretical, but I think it should work.