For me, the best way to locate a node is to have it on a group (like "zombie_target"), then, if it is going to be used all the time prepare a instance variable to store a reference to the node:
var target = null
Then on _ready or a function triggered by something (like a timer, animation, etc.) do
var target_group = get_tree().get_nodes_in_group("zombie_target")
if target_group.size() > 0:
target = target_group
when processing and trying to use the variable
if target != null:
You need null checks in case you free the target or for some reason enters later to the scene (and to try to find it again if "respawn"), also to test it without a target.
Using groups you can mark anything (with position) as target and test your zombies.
Depends on the design but the reverse can be done too, mark the zombies as "enemy" and then (when player is ready) make the player do
enemy.set_target sets the target property.