já verifiquei o código varias vezes e já comparei com os códigos do instrutor, baixando o projeto pronto no final da aula 4, quando dou o play o gerador de zumbis que fica ao lado do jogador começa a gerar zumbis.
o código GeradorZumbis:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GeradorZumbis : MonoBehaviour {
public GameObject Zumbi;
private float contadorTempo = 0;
public float TempoGerarZumbi = 1;
public LayerMask LayerZumbi;
private float distanciaDeGeracao = 3;
private float DistanciaDoJogadorParaGeracao = 20;
private GameObject jogador;
private void Start()
{
jogador = GameObject.FindWithTag("Jogador");
}
// Update is called once per frame
void Update () {
if(Vector3.Distance(transform.position,
jogador.transform.position) >
DistanciaDoJogadorParaGeracao )
{
contadorTempo += Time.deltaTime;
if (contadorTempo >= TempoGerarZumbi)
{
StartCoroutine(GerarNovoZumbi());
contadorTempo = 0;
}
}
}
void OnDrawGizmos()
{
Gizmos.color = Color.yellow;
Gizmos.DrawWireSphere(transform.position, distanciaDeGeracao);
}
IEnumerator GerarNovoZumbi ()
{
Vector3 posicaoDeCriacao = AleatorizarPosicao();
Collider[] colisores = Physics.OverlapSphere(posicaoDeCriacao, 1, LayerZumbi);
while(colisores.Length > 0)
{
posicaoDeCriacao = AleatorizarPosicao();
colisores = Physics.OverlapSphere(posicaoDeCriacao, 1, LayerZumbi);
yield return null;
}
Instantiate(Zumbi, posicaoDeCriacao, transform.rotation);
}
Vector3 AleatorizarPosicao ()
{
Vector3 posicao = Random.insideUnitSphere * distanciaDeGeracao;
posicao += transform.position;
posicao.y = 0;
return posicao;
}
}