Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

A linha dando erro

Boa tarde a linha scripControlaInterface = FindObjectsOfType(typeof(ControlaInterface)) as ControlaInterface; está dando erro script completo inimigo

public class ControlaInimigo : MonoBehaviour
{
    public GameObject jogador;
    private MovimentoPersonagem MovimentaInimigo;
    private AnimacaoPersonagem animacaoInimigo;
    private status statusInimigo;
    private Vector3 posicaoAleatoria;
    private Vector3 direcao;
    private float contadorVagar;
    private float tempoEntrePosicoesAleatorias = 4;
    private float porcentagemGerarKitMedico = 0.1f;
    public GameObject KitMedicopref;
    private ControlaInterface scripControlaInterface;
        // Start is called before the first frame update
    void Start()
    {
        jogador = GameObject.FindWithTag("Jogador");
        AleatorizarZumbi();
        MovimentaInimigo = GetComponent<MovimentoPersonagem>();
        animacaoInimigo = GetComponent<AnimacaoPersonagem>();
        statusInimigo = GetComponent<status>();
        scripControlaInterface = FindObjectsOfType(typeof(ControlaInterface)) as ControlaInterface;

    }

    // Update is called once per frame

     void FixedUpdate()
     {
        float distancia = Vector3.Distance(transform.position, jogador.transform.position);

        MovimentaInimigo.RotacionarPersonagens(direcao);
        animacaoInimigo.Movimentar(direcao.magnitude);

        if(distancia > 15)
        {
            Vagar();
        }
        else if (distancia > 2.5)
        {
            direcao = jogador.transform.position - transform.position;
            MovimentaInimigo.Movimentar(direcao,statusInimigo.velocidade);

            animacaoInimigo.atacar(false);
        }
        else
        {
            direcao = jogador.transform.position - transform.position;
            animacaoInimigo.atacar(true);
        }
     }
    void Vagar()
    {
        contadorVagar -= Time.deltaTime;
        if(contadorVagar <= 0)
        {
            posicaoAleatoria = aleatorizarPosicao();
            contadorVagar += tempoEntrePosicoesAleatorias;
        }


        bool ficouPertoOSuficiente = Vector3.Distance(transform.position, posicaoAleatoria) <= 0.05;

        if (ficouPertoOSuficiente == false)
        {
            direcao = posicaoAleatoria - transform.position;
            MovimentaInimigo.Movimentar(direcao, statusInimigo.velocidade);
        }



    }

Script interface

public class ControlaInterface : MonoBehaviour
{
    private ControladorJogador scriptControladorJogador;
    public Slider SliderVidaJogador;
    public GameObject PainelDeGameOver;
    public Text TempoDeSobre;
    public Text TextoPontuacaoMaxima;
    private float TempoPontuacaoSalva;
    private int quantidadeDeZumbisMortos;
    // Start is called before the first frame update
    void Start()
    {
        scriptControladorJogador = GameObject.FindWithTag("Jogador")
            .GetComponent<ControladorJogador>();
        SliderVidaJogador.maxValue = scriptControladorJogador.statusJogador.vida;
        AtualizarSliderVidaJogador();
        Time.timeScale = 1;
        TempoPontuacaoSalva = PlayerPrefs.GetFloat("PontuaçãoMaxima");

    }

    // Update is called once per frame
    void Update()
    {

    }
    public void AtualizarSliderVidaJogador()
    {
        SliderVidaJogador.value = scriptControladorJogador.statusJogador.vida;
    }
    public void AtualizarQuantidadeZumbiMortos()
    {
        quantidadeDeZumbisMortos++;
    }
    public void GameOver()
    {
        PainelDeGameOver.SetActive(true);
        Time.timeScale = 0;
        int minutos = (int)(Time.timeSinceLevelLoad / 60);
        int segundos = (int)(Time.timeSinceLevelLoad % 60);

        TempoDeSobre.text = "Você sobrevivieu " + minutos + " min e " + segundos +" s";
        AjustarPontuacaoMaxima(minutos,segundos);

    }
    void AjustarPontuacaoMaxima(int min, int seg)
    {
        if(Time.timeSinceLevelLoad > TempoPontuacaoSalva)
        {
            TempoPontuacaoSalva = Time.timeSinceLevelLoad;
            TextoPontuacaoMaxima.text = string.Format("Seu melhor tempo é {0} min e {1} s", min, seg);
            PlayerPrefs.SetFloat("PontuaçãoMaxima", TempoPontuacaoSalva);
        }
        if (TextoPontuacaoMaxima.text == "")
        {
            min = (int)TempoPontuacaoSalva / 60;
            seg = (int)TempoPontuacaoSalva % 60;
            TextoPontuacaoMaxima.text = string.Format("Seu melhor tempo é {0} min e {1} s", min, seg);
        }
    }
    public void Reiniciar()
    {
        SceneManager.LoadScene("1");
    }

}
2 respostas
solução!

Oi, Ronaldo, tudo bem?

No seu método parece ter um S a mais FindObjectsOfType esse método procura vários objetos nós queremos um só então é legal usar o FindObjectOfType

Deu certo muito obrigado