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

Problemas

Ao inserir o campo do texto o Jogador não atira mais.

Dentro da Unity aparece este warning "The referenced script on this Behaviour (Game Object 'Jogador') is missing!"

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

Script CotrolaJogador

using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using UnityEngine;
using Debug = UnityEngine.Debug;
using UnityEngine.SceneManagement;
using System.Threading;



public class ControlaJogador : MonoBehaviour
{

    public float Velocidade = 10;
    Vector3 direcao;
    public LayerMask MascaraChao;
    public GameObject TextoGameOver;
    public bool Vivo = true;

    private void Start()
    {
        Time.timeScale = 1;
    }

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

        float eixoX = Input.GetAxis("Horizontal");
        float eixoZ = Input.GetAxis("Vertical");

        direcao = new Vector3(eixoX, 0, eixoZ);

        if (direcao != Vector3.zero)
        {
            GetComponent<Animator>().SetBool("Movendo", true);
        }
        else
        {
            GetComponent<Animator>().SetBool("Movendo", false);
        }
        if (Vivo == false)
        {
            if (Input.GetButtonDown("Fire1"))
            {
                SceneManager.LoadScene("game");
            }
        }
    }

    void FixedUpdate()
    {
        GetComponent<Rigidbody>().MovePosition
            (GetComponent<Rigidbody>().position +
            (direcao * Velocidade * Time.deltaTime));

        Ray raio = Camera.main.ScreenPointToRay(Input.mousePosition);
        Debug.DrawRay(raio.origin, raio.direction * 100, Color.red);

        RaycastHit impacto;

        if (Physics.Raycast(raio, out impacto, 100, MascaraChao))
        {
            Vector3 posicaoMiraJogador = impacto.point - transform.position;

            posicaoMiraJogador.y = transform.position.y;

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

Script ControlaInimigo

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

public class ControlaInimigo : MonoBehaviour
{

    public GameObject Jogador;
    public float Velocidade = 5;

    // Start is called before the first frame update
    void Start()
    {

    }

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

    }

    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;
    }

}

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

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

5 respostas

Olá Joyce!

Pelo que você descreveu e pelas imagens fornecidas, parece que você está enfrentando um problema comum no Unity onde um script que deveria estar vinculado a um GameObject foi perdido ou não está sendo reconhecido corretamente. O aviso "The referenced script on this Behaviour (Game Object 'Jogador') is missing!" indica que o Unity espera encontrar um script no objeto "Jogador", mas não está conseguindo encontrá-lo.

Aqui estão algumas etapas que você pode seguir para resolver o problema:

  1. Verifique o Script: Certifique-se de que o script ControlaJogador ainda existe na pasta de scripts do seu projeto e que não há erros de compilação nele. Erros de compilação podem impedir que o script seja reconhecido pelo Unity.

  2. Revincule o Script: No painel Inspector do GameObject "Jogador", tente remover o componente que está com o aviso (clicando no canto superior direito do componente e selecionando "Remove Component") e depois adicione novamente o script ControlaJogador arrastando-o da pasta de scripts para o Inspector do GameObject "Jogador".

  3. Verifique o Nome do Script: O nome do arquivo do script deve corresponder exatamente ao nome da classe dentro do script. Se houver uma discrepância entre o nome do arquivo e o nome da classe, o Unity não poderá vincular o script ao GameObject.

  4. Confira as Dependências: Se o script ControlaJogador depende de outros scripts ou componentes, certifique-se de que todos eles estão presentes e corretamente configurados no GameObject "Jogador".

  5. Reimportar Scripts: Às vezes, reimportar os scripts pode resolver o problema. Você pode fazer isso clicando com o botão direito do mouse na pasta de scripts e selecionando "Reimport".

  6. Verifique o Prefab: Se o "Jogador" é um prefab, talvez seja necessário abrir o prefab e corrigir o problema lá, em vez de na instância do prefab na cena.

Após seguir essas etapas, tente executar o jogo novamente e veja se o problema com o jogador não atirar foi resolvido. Lembre-se de que após reatribuir o script ao GameObject, você pode precisar reconfigurar as variáveis expostas no Inspector, como referências a outros objetos ou valores de configuração.

Espero que essas dicas ajudem a resolver o problema. Bons estudos!

Olá!

Nada disto funcionou. Eu li mesmo que o warning é somente um aviso e não impacta nada, porém o meu personagem que antes atirava não atira mais. Eu li e alguns lugares que as pessoas tiveram que começar do zero então estou tentando isto.

Ao começar novamente e clicar para importar as animações já deu um warning. Acredita que dá para seguir tranquilamente?

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

Manda aqui um print do console listando os warning que estão ocorrendo agora

Olá

Eu já havia adicionado o prin com o warning não foi possível visualizar?

Insiro novamente o warning deu isto após importar as animações.

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

solução!

A solução foi iniciar do zero voltando em cada aula e alterando o Visual Studio. Porém o jogo não reinicia como esperado. A falta de alguém para responder é extremamente insatisfatório por parte da Alura. 2 semanas e nunca mais fui respondida.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software