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

Personagem não toma mais dano.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Quando dou play o personagem não sofre mais dano, estranho que estava tudo normal e só mexi no conteúdo do cenário. NullReferenceException: Object reference not set to an instance of an object NullReferenceException: Object reference not set to an instance of an object ControlaJogador.TomarDano (System.Int32 dano) (at Assets/Scripts/ControlaJogador.cs:78) ControlaInimigo.AtacaJogador () (at Assets/Scripts/ControlaInimigo.cs:55)

2 respostas

código do controla jogador:

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

public class ControlaJogador : MonoBehaviour { public float Velocidade = 10; private Vector3 direcao; public LayerMask MascaraChao; public GameObject TextoGameOver; private Rigidbody rigidbodyJogador; private Animator animatorJogador; public int Vida = 100; public ControlaInterface scriptControlaInterface; public AudioClip SomDeDano;

private void Start()
{
    Time.timeScale = 1;
    rigidbodyJogador = GetComponent<Rigidbody>();
    animatorJogador = GetComponent<Animator>();
}

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

    if (Vida <=0)
    {
        if (Input.GetButtonDown("Fire1"))
        {
            SceneManager.LoadScene("game");
        }
    }
}

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.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);

        rigidbodyJogador.MoveRotation(novaRotacao);
    }
}

public void TomarDano (int dano)
{
    Vida -= dano;
    scriptControlaInterface.AtualizarSliderVidaJogador();
    ControlaAudio.instancia.PlayOneShot(SomDeDano);
    if (Vida <= 0)
    {
        Time.timeScale = 0;
        TextoGameOver.SetActive(true);
    }
}

}

solução!

Achei o erro, o script canvas por algum motivo voltou a ficar como none (alguma hora dei ctrl+Z a mais do que devia provavelmente) coloquei o script e voltou a funcionar!

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