Boa tarde professor, estou na aula dois no tópico Modificando o Gerador e estou com um problema,que quando o chefe e gerado eu começo a perde vida do nada,antes disso meu código estava normal...se você puder me ajudar
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GeradorBoss : MonoBehaviour {
private float tempoParaProximaGeracao = 0;
public float tempoEntreGeracoes = 60;
public GameObject chefePrefab;
private ControlaInterface scriptControlaInteface;
public Transform[] PosicoesPossiveisDeGeracao;
private Transform jogador;
void Start () {
tempoParaProximaGeracao = tempoEntreGeracoes;
scriptControlaInteface = GameObject.FindObjectOfType(typeof(ControlaInterface)) as ControlaInterface;
jogador = GameObject.FindWithTag("Jogador").transform;
}
// Update is called once per frame
void Update () {
if(Time.timeSinceLevelLoad > tempoParaProximaGeracao)
{
Vector3 posicaoDeCriacao = CalculaPosicaoMaisDistanteDoJogador();
Instantiate(chefePrefab, posicaoDeCriacao, Quaternion.identity);
scriptControlaInteface.AparecerTextoChefeCriado();
tempoParaProximaGeracao = Time.timeSinceLevelLoad + tempoEntreGeracoes;
}
}
Vector3 CalculaPosicaoMaisDistanteDoJogador()
{
Vector3 posicaoDeMaiorDistancia = Vector3.zero;
float maiorDistancia = 0;
foreach(Transform posicao in PosicoesPossiveisDeGeracao)
{
float distanciaEntreJogador = Vector3.Distance(posicao.position, jogador.position);
if(distanciaEntreJogador > maiorDistancia)
{
maiorDistancia = distanciaEntreJogador;
posicaoDeMaiorDistancia = posicao.position;
}
}
return posicaoDeMaiorDistancia;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.UI;
public class ControlaChefe : MonoBehaviour, IMatavel {
private Transform jogador;
private NavMeshAgent agente;
private Status statusChefe;
private AnimacaoPersonagem animacaoChefe;
private MovimentoPersonagem movimentoChefe;
public GameObject KitMedicoPrefab;
public Slider sliderVidaChefe;
public Image ImageSlider;
public Color CorDaVidaMaxima, CorDaVidaMinima;
void Start () {
jogador = GameObject.FindWithTag("Jogador").transform;
agente = GetComponent<NavMeshAgent>();
statusChefe = GetComponent<Status>();
agente.speed = statusChefe.Velocidade;
animacaoChefe = GetComponent<AnimacaoPersonagem>();
movimentoChefe = GetComponent<MovimentoPersonagem>();
sliderVidaChefe.maxValue = statusChefe.Vida;
AtualizarInterface();
}
private void Update()
{
agente.SetDestination(jogador.position);
animacaoChefe.Movimentar(agente.velocity.magnitude);
if(agente.hasPath == true)
{
bool estouPertoDoJogador = agente.remainingDistance <= agente.stoppingDistance;
if(estouPertoDoJogador)
{
animacaoChefe.Atacar(true);
Vector3 direcao = jogador.position - transform.position;
movimentoChefe.Rotacionar(direcao);
}
else
{
animacaoChefe.Atacar(false);
}
}
}
void AtacaJogador()
{
int dano = Random.Range(30, 40);
jogador.GetComponent<ControlaJogador>().TomarDano(dano);
}
public void TomarDano(int dano)
{
statusChefe.Vida -= dano;
AtualizarInterface();
if(statusChefe.Vida <= 0)
{
Morrer();
}
}
public void Morrer()
{
animacaoChefe.Morrer();
movimentoChefe.Morrer();
this.enabled = false;
agente.enabled = false;
Destroy(gameObject, 2);
Instantiate(KitMedicoPrefab, transform.position, Quaternion.identity);
}
void AtualizarInterface()
{
sliderVidaChefe.value = statusChefe.Vida;
float porcentagemDaVida = (float)statusChefe.Vida / statusChefe.VidaInicial;
Color corDaVida= Color.Lerp(CorDaVidaMinima,CorDaVidaMaxima, porcentagemDaVida);
ImageSlider.color = corDaVida;
}
}
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement;