8
respostas

a barra de hp não desse

bom, eu fiz o codigo aqui e a barra de hp não esta dessendo de jeito nenhum

olha como ta o codigo do personagem

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

public class controle : MonoBehaviour { private Rigidbody rigidbodyJogador; public int Vida = 100; public efeitosVisuaisDeHud scriptEfeitosVisuaisDeHud;

// Start is called before the first frame update
void Start()
{
    Time.timeScale = 1;
    rigidbodyJogador = GetComponent<Rigidbody>();
}

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

void Update()
{
    //Inputs do Jogador - Guardando teclas apertadas
    float eixoX = Input.GetAxis("Horizontal");
    float eixoZ = Input.GetAxis("Vertical");

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

    //Animações do Jogador
    if (direcao != Vector3.zero)
    {
        GetComponent<Animator>().SetBool("movendo", true);
    }
    else
    {
        GetComponent<Animator>().SetBool("movendo", false);
    }

    if (vivo == false)
    {
        if (Input.GetButtonDown("Fire1"))
        {
            SceneManager.LoadScene("estudano");
        }
    }
}

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;
    scriptEfeitosVisuaisDeHud.AtualizarSliderVidaJogador();
    if (Vida <= 0)
    {
        Time.timeScale = 0;
        TextoGameOver.SetActive(true);
    }
}

}

e o codigo da barra de hp

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

public class efeitosVisuaisDeHud : MonoBehaviour { private controle scriptcontrole; public Slider SliderVidaJogador;

// Use this for initialization
void Start()
{
    scriptcontrole = GameObject.FindWithTag("jogador").GetComponent<controle>();
    SliderVidaJogador.maxValue = scriptcontrole.Vida;
    AtualizarSliderVidaJogador();
}

public void AtualizarSliderVidaJogador()
{
    SliderVidaJogador.value = scriptcontrole.Vida;
}

}

se puder me dizer o que eu fiz de errado seria legal

8 respostas

Oi, Fred, tudo bem?

Você vê algum erro no console quando o jogador toma dano? A vida diminui no Inspector?

a vida desse, mas a barra de hp não

Algum erro no console?

não deu erro nenhum

Pode fazer o zip do projeto e colocar num google drive ou dropbox com acesso público para baixarmos?

Assim conseguimos dar uma olhada com mais detalhes.

vou ver

ou posso zipar o arquivo e mandar por e-mail?

Oi, Fred, você pode colocar num Google Drive, Dropbox, WeTransfer ou qualquer coisa assim e colar o link aqui.

Só lembre de nas opções deixar o compartilhamento publico para que qualquer pessoa possa acessar.