Barra de Stamina con bug
Tengo este código el cual es funcional, lo conecte a otro script en el cual hago la resta. Es una estamina para sistema de combate, lo básico, atacas y pierdes estaminas, descansas y se recarga, el detalle es que si te pones a atacar cuando esta se esta recargando puedes lograr atacar indefinidamente hasta que el glitch se detenga. Quisiera algún consejo para mejorar mi código. Muchas gracias de antemano.
using UnityEngine; using UnityEngine.UI; using System.Collections;
public class stamina : MonoBehaviour { public int startingStamina = 70; public int currentStamina; public Slider StaminaSlider;
public int multiplier = 1;
public int attackStamina = 10;
public float beforeUP = 1;
public float waitUP = 5;
bool start = false;
float percent = 0.7f;
void Awake()
{
currentStamina = startingStamina;
if(StaminaSlider == null)
{
StaminaSlider = GameObject.FindGameObjectWithTag("Stamina").GetComponent<Slider>();
}
}
void LateUpdate()
{
//timer += Time.deltaTime;
if (currentStamina <= startingStamina*percent)
{
start = true;
if (start)
{
StartCoroutine(StaminaRestore());
}
}
}
public void DownStamina(int amount)
{
currentStamina -= amount;
StaminaSlider.value = currentStamina;
}
public void UpStamina(int amount)
{
currentStamina += amount;
StaminaSlider.value = currentStamina;
}
IEnumerator StaminaRestore()
{
yield return new WaitForSeconds(waitUP);
if (currentStamina < startingStamina)
{
UpStamina(1 * multiplier);
yield return new WaitForSeconds(beforeUP);
}
else
{
start = false;
}
}
}
Answer by Nelsis · Jan 25, 2017 at 05:25 PM
Listo, ya la repare :)
using UnityEngine; using UnityEngine.UI; using System.Collections;
public class stamina : MonoBehaviour { public int startingStamina = 70; public int currentStamina; public Slider StaminaSlider;
public int multiplier = 1;
public int attackStamina = 10;
public float waitUP = 2;
void Awake()
{
currentStamina = startingStamina;
if(StaminaSlider == null)
{
StaminaSlider = GameObject.FindGameObjectWithTag("Stamina").GetComponent<Slider>();
}
}
void LateUpdate()
{
if (currentStamina <= startingStamina)
{
StartCoroutine(StaminaRestore());
}
}
public void DownStamina(int amount)
{
currentStamina -= amount;
StaminaSlider.value = currentStamina;
StopAllCoroutines();
}
public void UpStamina(int amount)
{
currentStamina += amount;
StaminaSlider.value = currentStamina;
}
IEnumerator StaminaRestore()
{
yield return new WaitForSeconds(waitUP);
if (currentStamina < startingStamina)
{
UpStamina(1 * multiplier);
}
}
}
Your answer
Follow this Question
Related Questions
Stamina bar 0 Answers
getkey, keyup, keydown 2 Answers
lerp a float value of keyup 2 Answers
Stamina disabled but still registering extra click 0 Answers
How to make a health script for a custom health bar (In A Canvas)? 3 Answers