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

Nao encontro o erro

Depois que criei o script GeradorZumbis comecei a ter alguns erros! Os zumbis sao gerados e seguem reto até uma parte do cenário. Quando eu atiro muda a skin do zumbi e quando recarrego o meu personagem ora aparece normal, ora com o chapeu do indiana Jones rs. Insira aqui a descrição dessa imagem para ajudar na acessibilidade.

Meu codigo ControlaInimigo:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class ControlaInimigo : MonoBehaviour
{
    public GameObject Jogador;
    public float Velocidade = 5;

    void Start () {
    Jogador = GameObject.FindWithTag("Jogador");
    int geraTipoZumbi = Random.Range(1, 28);
    transform.GetChild(geraTipoZumbi).gameObject.SetActive(true);
}




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

        Vector3 direcao = Jogador.transform.position - transform.position;

           Quaternion novaRotacao = Quaternion.LookRotation(direcao);
        GetComponent<Rigidbody>().MoveRotation(novaRotacao);


        if(distancia > 2.5)
        {            
            GetComponent<Rigidbody>().MovePosition

                (GetComponent<Rigidbody>().position + 
                direcao.normalized * Velocidade * Time.deltaTime);
                GetComponent<Animator>().SetBool("Atacando", false); 
        }
        else
        {
        GetComponent<Animator>().SetBool("Atacando", true);  
        }


        }

}


Codigo GeradorZumbis:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GeradorZumbis : MonoBehaviour {

        public GameObject Zumbi;
        float contadorTempo = 0;
        public float TempoGerarZumbi = 1;

        // Use this for initialization
        void Start () {

        }

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

            contadorTempo += Time.deltaTime;

            if(contadorTempo >= TempoGerarZumbi)
            {
                Instantiate(Zumbi, transform.position, transform.rotation);
                contadorTempo = 0;
            }

        }

}
8 respostas

Olá!

Pode ser que o código esteja tanto no objeto principal quanto nos filhos de dentro do prefab (eles devem estar só no objeto principal). Dá uma conferida nisso e vá apagando se necessário,

Qualquer coisa pode mandar um .zip do projeto que damos uma olhada.

Bom a principio descobri o porque dos meus zumbis estarem seguindo para outro lugar... O que estava acontecendo é que acidentalmente coloquei a tag Jogador no Hotel Destruído e os zumbis estavam indo pra lá! Agora meu Jogador não gira ele só atira para frente. E fica aparecendo "Atacando does not exist' Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Sobre não girar pode ser a falta da tag de chão nos objetos ou falta de colisor para que o raio possa ser computado.

No seu Animator tem a variável Atacando que usamos no script?

Sim professor Henrique, a variável "Atacando" está no script. Segue o código controlaInimigo:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class ControlaInimigo : MonoBehaviour
{
    public GameObject Jogador;
    public float Velocidade = 5;

    void Start () {
    Jogador = GameObject.FindWithTag("Jogador");
    int geraTipoZumbi = Random.Range(1, 27);
    transform.GetChild(geraTipoZumbi).gameObject.SetActive(true);
}




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

        Vector3 direcao = Jogador.transform.position - transform.position;

           Quaternion novaRotacao = Quaternion.LookRotation(direcao);
        GetComponent<Rigidbody>().MoveRotation(novaRotacao);


        if(distancia > 2.5)
        {            
            GetComponent<Rigidbody>().MovePosition

                (GetComponent<Rigidbody>().position + 
                direcao.normalized * Velocidade * Time.deltaTime);
                GetComponent<Animator>().SetBool("Atacando", false); 
        }
        else
        {
        GetComponent<Animator>().SetBool("Atacando", true);  
        }

             void AtacaJogador ()
        {
    Time.timeScale = 0;
    Jogador.GetComponent<ControlaJogador>().TextoGameOver.SetActive(true);
    Jogador.GetComponent<ControlaJogador>().Vivo = false;
            }

        }
        void AtacaJogador ()
    {
    Time.timeScale = 0;
    Jogador.GetComponent<ControlaJogador>().TextoGameOver.SetActive(true);
    Jogador.GetComponent<ControlaJogador>().Vivo = false;

    }

}







Insira aqui a descrição dessa imagem para ajudar na acessibilidade

No Animator, ela está sendo usada pra fazer as transições de animação por lá?

Fala Henrique, bom andei revendo as aulas de rotação do meu jogador e fui buscando no codigo e na Unity mas ainda não consegui encontrar o porquê meu jogador não está girando para mirar nos zumbis. De resto, acredito que está funcionando. Segue o link do meu projeto. https://drive.google.com/file/d/1IkoAWPjflfif7cbPhrkAUOpMOOHAcvml/view?usp=sharing

solução!

Oi, Felipe, tudo bem?

Dá uma conferida no jogador ele tem o script do inimigo, isso deve estar atrapalhando o código.

Nossa mestre era isso mesmo!! muito obrigado novamente :)