Tô aproveitando o curso pra tentar adicionar algumas outras condições. Fiz o HP dos zumbis serem gerados randomicamente de 1 a 6(excludente), ao ser morto o zumbi soma uma pontuação = a quantidade de vida , que é exibida ao final do jogo ( morrendo ou ganhando). Criei uma condição de vitória que é ativada se o player chegar a um raio de 5 ou menos do centro de um acampamento. Por fim fiz um Script que permite ao jogador correr enquanto segurar o shift, ele também tem um limite de energia, ficou um tanto porco, mas tá cumprindo o seu papel, aparentemente corrigi todos os bugs. Me baseei nos scripts de gerador de Zumbis e controle da arma, esse novo script tá salvo e sendo executado diretamente no prefab do jogador.
Aceito sugestões de melhoria :)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Correr : MonoBehaviour
{
public float energia = 3;
public float contadorTempo ;
GameObject Player;
public float VelocidadeCorrendo = 1.5f;
private bool correndo = false;
private bool cansado = false;
private void Start()
{
Player = GameObject.FindWithTag(Tags.player);
}
void Update()
{
PlayerCorrendo();
Contador();
Descansar();
}
void PlayerCorrendo()
{
if(cansado == false)
{
if (Input.GetButtonDown("Fire3"))
{
Player.GetComponent<PlayerInput>().StatusPlayer.velocidade *= VelocidadeCorrendo;
correndo = true;
}
else if (Input.GetButtonUp("Fire3"))
{
Player.GetComponent<PlayerInput>().StatusPlayer.velocidade /= VelocidadeCorrendo;
correndo = false;
}
}
}
void Contador()
{
if(correndo == true)
{
contadorTempo += Time.deltaTime;
if (contadorTempo >= energia)
{
cansado = true;
Player.GetComponent<PlayerInput>().StatusPlayer.velocidade /= VelocidadeCorrendo;
correndo = false;
}
}
}
void Descansar()
{
if(contadorTempo > 0 && Player.GetComponent<PlayerInput>().vetor.magnitude <= 0.1)
{
contadorTempo -= (Time.deltaTime / 2);
if(contadorTempo <= 1)
{
cansado = false;
}
}
}
}