Hi, I'm kinda new to godot but I'd like to help.
You could use a Sprite3D, set it as a child of your rigid body, and set the material of the sprite to billboard, then in material override - material flags you may need to turn on certain flags like "on top", "unshaded" and "invert faces"; "on top" will render the Sprite3D over everything else, "unshaded" for ignoring light sources and "invert faces" may be needed if the normal is pointing backwards.
The key element is Billboard flag on your Sprite3D-Geometry Instance-Geometry settings in the inspector.
Other thing: I don't really know why but you have to set textures both on your Sprite3D and it's Material override diffuse, don't know why but it seems to not render at all if I don't set textures on both.
[EDIT]
this is the code for your health bar script
extends Sprite
func ready():
setprocess(true)
func process(delta):
var parent = getnode("../Node2D") # put here your player's node path
var offset = Vector2(0, -100) # simple offset for the health bar,
self.setpos(parent.getpos()+offset)
just make sure your health bar is a brother node of your player node