A Slide tem sempre o valor 0 agora, fica toda vermelha.
Script Status
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Status : MonoBehaviour
{
public int VidaInicial = 100;
[HideInInspector]
public int Vida;
public float Velocidade = 5;
private void Start()
{
Vida = VidaInicial;
}
}
Script Interface
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ControlaInterface : MonoBehaviour
{
private ControlaJogador scriptControlaJogador;
public Slider SliderVidaJogador;
void Start()
{
scriptControlaJogador = GameObject.FindWithTag("Jogador")
.GetComponent<ControlaJogador>();
SliderVidaJogador.maxValue = scriptControlaJogador.statusJogador.Vida;
AtualizaSliderVidaJogador();
}
void Update()
{
}
public void AtualizaSliderVidaJogador()
{
SliderVidaJogador.value = scriptControlaJogador.statusJogador.Vida;
}
}
Script jogador
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class ControlaJogador : MonoBehaviour
{
public LayerMask mascaraChao;
public GameObject TextoGameOver;
private Vector3 direcao;
public ControlaInterface ScriptControlaInterface;
public AudioClip SomDeDano;
private MovimentoJogador meuMovimentoJogador;
private AnimacaoPersonagem animacaoJogador;
public Status statusJogador;
private void Start()
{
Time.timeScale = 1;
meuMovimentoJogador = GetComponent<MovimentoJogador>();
animacaoJogador = GetComponent<AnimacaoPersonagem>();
statusJogador = GetComponent<Status>();
}
// Update is called once per frame
void Update()
{
float eixoX = Input.GetAxis("Horizontal");
float eixoZ = Input.GetAxis("Vertical");
direcao = new Vector3(eixoX, 0, eixoZ);
animacaoJogador.Movimentar(direcao.magnitude);
if (statusJogador.Vida <= 0)
{
if (Input.GetButtonDown("Fire1"))
{
SceneManager.LoadScene("game");
}
}
}
void FixedUpdate()
{
meuMovimentoJogador.Movimentar(direcao, statusJogador.Velocidade);
meuMovimentoJogador.RotacaoJogador(mascaraChao);
}
public void TomarDano(int dano)
{
statusJogador.Vida -= dano;
ScriptControlaInterface.AtualizaSliderVidaJogador();
ControlaAudio.instancia.PlayOneShot(SomDeDano);
if (statusJogador.Vida <= 0)
{
Time.timeScale = 0;
TextoGameOver.SetActive(true);
}
}
}