Percebi que se a animação do zumbi completa, mesmo que meu jogador esteja longe dele, o dano ainda é registrado, pois o que define o evento é a animação.
Para corrigir isso, fiz o seguinte com o código do zumbi, assim, acho uma pequena melhoria na experiência do jogador:
void AtacaJogador() { float distancia = Vector3.Distance(transform.position, Jogador.transform.position) if(distancia < 2.5) { Jogador.GetComponent().TomarDano() }