//This function gets called for the input
public void OnAbility(InputAction.CallbackContext context)
{
pressingAbility = context.ReadValue<float>();
}
private void Update()
{
//If you press the input (space bar) and you're not on cooldown
if (pressingAbility == 1 && !onCooldown)
{
onCooldown = true;
StartCoroutine(OnCooldown());
StartCoroutine(InAbility());
}
//If you're in the ability
if (inAbility)
{
FindObjectOfType<UpgradeSystem>().GetUpgradeStates();
playerWings.SetActive(true);
onCooldownTime = 0;
}
//If you're not in the ability
else
{
onCooldownTime += Time.deltaTime;
playerWings.SetActive(false);
FindObjectOfType<UpgradeSystem>()
.shieldObject.SetActive(false);
FindObjectOfType<UpgradeSystem>()
.shield.shieldHealth = 0;
slider.value = onCooldownTime;
}
}
//If enough wings collected, upgrade
public void GettingUpgrade()
{
if (upgradePart >= upgradePartsNeeded && upgradeState < 3)
{
upgradeState += 1;
upgradePart = 0;
upgradePartsNeeded = upgradePartsNeeded + 2;
}
}
//All upgrades
public void GetUpgradeStates()
{
if (upgradeState == 1)
{
// 20% more move speed while walking & sprinting
playerMovement.moveSpeed = playerMovement.boostedWalkMoveSpeed;
playerMovement.moveSpeed = playerMovement.boostedSprintMoveSpeed;
}
if (upgradeState == 2)
{
// 20% more move speed while walking & sprinting + 20% jump boost
playerMovement.moveSpeed = playerMovement.boostedWalkMoveSpeed;
playerMovement.moveSpeed = playerMovement.boostedSprintMoveSpeed;
playerMovement.jumpForce = playerMovement.boostedJumpForce;
}
if (upgradeState == 3)
{
/* 2 Extra Health +
20% more move speed while walking & sprinting + 20% jump boost */
shield.shieldHealth = 2;
shieldObject.SetActive(true);
playerMovement.moveSpeed = playerMovement.boostedWalkMoveSpeed;
playerMovement.jumpForce = playerMovement.boostedJumpForce;
}
}
using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
public class AngelForm : MonoBehaviour
{
//Input
private PlayerInput playerInput;
private InputAction abilityInput;
private float pressingAbility;
//Cooldown
public float cooldownTime;
private bool onCooldown;
//Ability
[SerializeField] float abilityTime;
private bool inAbility;
[SerializeField] GameObject playerWings;
[SerializeField] Slider slider;
[SerializeField] TextMeshProUGUI readyText;
private float onCooldownTime;
private void Start()
{
playerInput = new PlayerInput();
abilityInput = playerInput.Player.Walk;
abilityInput.Enable();
}
public void OnAbility(InputAction.CallbackContext context)
{
pressingAbility = context.ReadValue<float>();
}
private void Update()
{
if (pressingAbility == 1 && !onCooldown)
{
onCooldown = true;
StartCoroutine(OnCooldown());
StartCoroutine(InAbility());
}
if (inAbility)
{
FindObjectOfType<UpgradeSystem>().GetUpgradeStates();
playerWings.SetActive(true);
onCooldownTime = 0;
}
else
{
onCooldownTime += Time.deltaTime;
playerWings.SetActive(false);
FindObjectOfType<UpgradeSystem>().shieldObject.SetActive(false);
FindObjectOfType<UpgradeSystem>().shield.shieldHealth = 0;
slider.value = onCooldownTime;
}
if (!onCooldown)
{
readyText.text = "READY!";
}
else
{
readyText.text = "";
}
}
private IEnumerator InAbility()
{
inAbility = true;
yield return new WaitForSeconds(abilityTime);
inAbility = false;
}
private IEnumerator OnCooldown()
{
yield return new WaitForSeconds(cooldownTime);
onCooldown = false;
}
}
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class UpgradeSystem : MonoBehaviour
{
[SerializeField] float upgradeState;
[SerializeField] float upgradePartsNeeded;
public float upgradePart;
private PlayerMovement playerMovement;
public Shield shield;
public GameObject shieldObject;
//UI
[SerializeField] Slider slider;
[SerializeField] TextMeshProUGUI upgradePartsText;
[SerializeField] TextMeshProUGUI upgradeStateText;
private void Awake()
{
playerMovement = FindObjectOfType<PlayerMovement>();
shield = FindObjectOfType<Shield>();
shieldObject.SetActive(false);
}
public void GettingUpgrade()
{
if (upgradePart >= upgradePartsNeeded && upgradeState < 3)
{
upgradeState += 1;
upgradePart = 0;
upgradePartsNeeded = upgradePartsNeeded + 2;
}
}
private void Update()
{
//UI
slider.value = upgradePart;
slider.maxValue = upgradePartsNeeded;
upgradePartsText.text = upgradePart.ToString() + " / " + upgradePartsNeeded.ToString();
upgradeStateText.text = "Power: " + upgradeState.ToString();
}
public void GetUpgradeStates()
{
if (upgradeState == 1)
{
// 20% more move speed while walking & sprinting
playerMovement.moveSpeed = playerMovement.boostedWalkMoveSpeed;
playerMovement.moveSpeed = playerMovement.boostedSprintMoveSpeed;
}
if (upgradeState == 2)
{
// 20% more move speed while walking & sprinting + 20% jump boost
playerMovement.moveSpeed = playerMovement.boostedWalkMoveSpeed;
playerMovement.moveSpeed = playerMovement.boostedSprintMoveSpeed;
playerMovement.jumpForce = playerMovement.boostedJumpForce;
}
if (upgradeState == 3)
{
// 2 Extra Health + 20% more move speed while walking & sprinting+ 20% jump boost
shield.shieldHealth = 2;
shieldObject.SetActive(true);
playerMovement.moveSpeed = playerMovement.boostedWalkMoveSpeed;
playerMovement.jumpForce = playerMovement.boostedJumpForce;
}
}
}