1
resposta

script da vida da erro no unity

no visual studio, o script não apresenta nenhum erro, mas quando o unity compila, diz q tem um erro Código do jogador:

{
    Vector3 direcao;
    public float Velocidade = 10;
    public LayerMask mascaraChao;
    public GameObject textoGameOver;
    private Rigidbody rigidbodyJogador;
    private Animator animatorJogador;
    public int vida = 100;
    public ControlaInterface scriptControlaInterface;

    // Start is called before the first frame update
    void Start()
    {
        Time.timeScale = 1;

        rigidbodyJogador = GetComponent<Rigidbody>();
        animatorJogador = GetComponent<Animator>();
        scriptControlaInterface = GetComponent<ControlaInterface>();

    }

    // 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)
        {
            animatorJogador.SetBool("Movendo", true);
            animatorJogador.SetBool("Relogio", true);
        }
        else {
            animatorJogador.SetBool("Movendo", false);
            animatorJogador.SetBool("Relogio", false);
             }

         if(vida <= 0)
        {
            if (Input.GetButtonDown("Fire3"))
            {
                SceneManager.LoadScene("gameZumbi");
            }
        }
    }

    private void FixedUpdate()
    {
        rigidbodyJogador.MovePosition
    (rigidbodyJogador.position +
    (direcao * Velocidade * Time.deltaTime));

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

        RaycastHit impacto;

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

            MiraDoJogador.y = transform.position.y;

            Quaternion novaRotacao = Quaternion.LookRotation(MiraDoJogador);

            rigidbodyJogador.MoveRotation(novaRotacao);
        }
    }

    public void TomarDano(int dano)
    {
        vida -= dano;
        scriptControlaInterface.AtualizarVidaJogador();

        if(vida <= 0)
        {
            Time.timeScale = 0;

            textoGameOver.SetActive(true);
        }
    }
}

Código da Interface:

{

    private ControlaJogador scriptControlaJogador;
    public Slider SliderVidaJogador;

    // Start is called before the first frame update
    void Start()
    {
        scriptControlaJogador = GameObject.FindWithTag("Player").GetComponent<ControlaJogador>();
        SliderVidaJogador.maxValue = scriptControlaJogador.vida;
    }

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

    }

public void AtualizarVidaJogador()
    {
        SliderVidaJogador.value = scriptControlaJogador.vida;
    }
}
1 resposta

Oi, Edivaldo, tudo bem?

E o que aparece de erro na Unity? Esquece o editor porque ele não tem todas as informações necessárias para fazer a compilação totalmente correta, como verificar objetos preenchidos, etc. Ele só verifica código.

O que vale no final são os erros que aparecem no Console. Se não tiver aberto você pode abrir em Window > Console.