- Home /
Question by
ShadyShyGuy · Jan 22, 2019 at 05:59 AM ·
scripting problemui3d
I have a bug with my UI.
I have a UI bug. My radiation on go up it did, but I must have changed something and can't remember what I did. If some could help, here is my code: using UnityEngine; using UnityEngine.UI; using UnityStandardAssets.Characters.FirstPerson;
public class PlayerVitals : MonoBehaviour {
[SerializeField] private Transform player;
[SerializeField] private Transform respawnPoint;
public Slider healthSlider;
public int maxHealth;
public int healthFallRate;
public Slider thirstSlider;
public int maxThirst;
public int thirstFallRate;
public Slider hungerSlider;
public int maxHunger;
public int hungerFallRate;
public Slider radiationSlider;
public int maxRadiation;
public int radiationGainRate;
public Slider staminaSlider;
public int maxStamina;
private int staminaFallRate;
public int staminaFallMultiplier;
private int staminaRegenRate;
public int staminaRegenMultiplier;
private CharacterController charController;
private FirstPersonController playerController;
void Start()
{
healthSlider.maxValue = maxHealth;
healthSlider.value = maxHealth;
thirstSlider.maxValue = maxThirst;
thirstSlider.value = maxThirst;
hungerSlider.maxValue = maxHunger;
hungerSlider.value = maxHunger;
staminaSlider.maxValue = maxStamina;
staminaSlider.value = maxStamina;
staminaFallRate = 1;
staminaRegenRate = 1;
radiationSlider.maxValue = 0;
radiationSlider.value = maxRadiation;
charController = GetComponent<CharacterController>();
playerController = GetComponent<FirstPersonController>();
}
void Update()
{
//Health Controller
if (hungerSlider.value <= 0 && (thirstSlider.value <= 0) && (radiationSlider.value >= maxRadiation))
{
healthSlider.value -= Time.deltaTime / healthFallRate * 2;
Debug.Log("Dying");
}
else if(hungerSlider.value <= 0 || thirstSlider.value <= 0 || radiationSlider.value >= maxRadiation)
{
healthSlider.value -= Time.deltaTime / healthFallRate;
Debug.Log("Dying");
}
if(healthSlider.value <= 0)
{
CharacterDeath();
}
//Hunger Controller
if(hungerSlider.value >= 0)
{
hungerSlider.value -= Time.deltaTime / hungerFallRate;
}
else if(hungerSlider.value <= 0)
{
hungerSlider.value = 0;
}
else if(hungerSlider.value >= maxHunger)
{
hungerSlider.value = maxHunger;
}
//Thirst Controller
if (thirstSlider.value >= 0)
{
thirstSlider.value -= Time.deltaTime / thirstFallRate;
}
else if (thirstSlider.value <= 0)
{
thirstSlider.value = 0;
}
else if (thirstSlider.value >= maxThirst)
{
thirstSlider.value = maxThirst;
}
//Stamina Controller
if (charController.velocity.magnitude > 0 && Input.GetKey(KeyCode.LeftShift))
{
staminaSlider.value -= Time.deltaTime / staminaFallRate * staminaFallMultiplier;
}
else
{
staminaSlider.value += Time.deltaTime / staminaRegenRate * staminaRegenMultiplier;
}
if (staminaSlider.value >= maxStamina)
{
staminaSlider.value = maxStamina;
}
else if (staminaSlider.value <= 0)
{
staminaSlider.value = 0;
playerController.m_RunSpeed = playerController.m_WalkSpeed;
}
else if (staminaSlider.value >= 0)
{
playerController.m_RunSpeed = playerController.m_RunSpeedNorm;
}
//Radiation Controller
if(radiationSlider.value <= 0)
{
radiationSlider.value += Time.deltaTime / radiationGainRate;
}
else if (radiationSlider.value <= 0)
{
radiationSlider.value = 0;
}
else if (radiationSlider.value >= maxRadiation)
{
radiationSlider.value = maxRadiation;
}
}
void CharacterDeath()
{
player.transform.position = respawnPoint.transform.position;
healthSlider.value = maxHealth;
}
}
Comment
Answer by redrumx · Jan 22, 2019 at 06:07 AM
Probably the reason is you have 2 if statements with the same condition: radiationSlider.value <= 0
.
Your answer
