try using groups for the projectile-player collision detection.
the way you do this is you add the player instance to a group (this is set in the node tab next to the signals button). you should see a text edit area and a button that says "add".
in the text edit area, type in the name of the group you want the player to be in. something like "players" will work fine.
then, in the projectile collision detection, instead of using signals to check if you are colliding with the player, you should check if the colliding node is part of the "players" group.
something like this:
func _physics_process():
bodies = get_colliding_bodies()
for body in bodies:
if body.is_in_group("players"): #check colliding body is in the "players" group
body.damage(damage) #whatever u want to do (i.e, damage the player)
this'll make sure that only the players will recieve damage, nd not anything else.
note: the group name used in the collision detection should be the same name you put into the player nodes group name.