Meus Scripts
Script "ControlaJogador.cs":
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ControlaJogador : MonoBehaviour, IMatavel, ICuravel
{
private Vector3 direcao;
public LayerMask MascaraChao;
public GameObject TextoGameOver;
public ControlaInterface scriptControlaInterface;
public AudioClip SomDeDano;
private MovimentoJogador meuMovimentoJogador;
private AnimacaoPersonagem animacaoJogador;
public Status statusJogador;
private void Start()
{
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);
}
void FixedUpdate()
{
meuMovimentoJogador.Movimentar(direcao, statusJogador.Velocidade);
meuMovimentoJogador.RotacaoJogador(MascaraChao);
}
public void TomarDano (int dano)
{
statusJogador.Vida -= dano;
scriptControlaInterface.AtualizarSliderVidaJogador();
ControlaAudio.instancia.PlayOneShot(SomDeDano);
if(statusJogador.Vida <= 0)
{
Morrer();
}
}
public void Morrer ()
{
scriptControlaInterface.GameOver();
}
public void CurarVida (int quantidadeDeCura)
{
statusJogador.Vida += quantidadeDeCura;
if(statusJogador.Vida > statusJogador.VidaInicial){
statusJogador.Vida = statusJogador.VidaInicial;
}
scriptControlaInterface.AtualizarSliderVidaJogador();
}
}
Script "ControlaInimigo.cs":
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ControlaInimigo : MonoBehaviour, IMatavel
{
public GameObject Jogador;
private MovimentoPersonagem movimentaInimigo;
private AnimacaoPersonagem animacaoInimigo;
private Status statusInimigo;
public AudioClip SomDeMorte;
private Vector3 posicaoAleatoria;
private Vector3 direcao;
private float contadorVagar;
private float tempoEntrePosicoesAleatorias = 4;
private float porcentagemGerarKitMedico = 1;
public GameObject KitMedicoPrefeb;
// Use this for initialization
void Start () {
Jogador = GameObject.FindWithTag("Jogador");
animacaoInimigo = GetComponent<AnimacaoPersonagem>();
movimentaInimigo = GetComponent<MovimentoPersonagem>();
AleatorizarZumbi();
statusInimigo = GetComponent<Status>();
}
void FixedUpdate()
{
float distancia = Vector3.Distance(transform.position, Jogador.transform.position);
movimentaInimigo.Rotacionar(direcao);
animacaoInimigo.Movimentar(direcao.magnitude);
if(distancia > 15)
{
Vagar ();
}
else if (distancia > 2.5)
{
direcao = Jogador.transform.position - transform.position;
movimentaInimigo.Movimentar(direcao, statusInimigo.Velocidade);
animacaoInimigo.Atacar(false);
}
else
{
direcao = Jogador.transform.position - transform.position;
animacaoInimigo.Atacar(true);
}
}
void Vagar ()
{
contadorVagar -= Time.deltaTime;
if(contadorVagar <= 0)
{
posicaoAleatoria = AleatorizarPosicao();
contadorVagar += tempoEntrePosicoesAleatorias;
}
bool ficouPertoOSuficiente = Vector3.Distance(transform.position, posicaoAleatoria) <= 0.05;
if (ficouPertoOSuficiente == false)
Script "KitMedico.cs":
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class KitMedico : MonoBehaviour
{
private int quantidadeDeCura = 15;
private int tempoDeDestruicao = 5;
private void Start()
{
Destroy(gameObject, tempoDeDestruicao);
}
private void OnTriggerEnter(Collider objetoDeColisao)
{
if(objetoDeColisao.tag == "Jogador")
{
objetoDeColisao.GetComponent<ControlaJogador>().CurarVida(quantidadeDeCura);
Destroy(gameObject);
}
}
}