Esempio ricarica e utilizzo mana in Unity

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour
{
    public float maxMana = 100f;
    public float currentMana = 100f;
    public float manaUsage = 20f;
    public float manaRegenRate = 10f;
    private bool canUseMana = true;
    private float timeSinceLastUse = 0f;

    void Update()
    {
        if (canUseMana && Input.GetKeyDown(KeyCode.Space) && currentMana >= manaUsage)
        {
            currentMana -= manaUsage;
            Debug.Log("Mana used! Current mana: " + currentMana);
            timeSinceLastUse = 0f;
            if (currentMana <= 0)
            {
                canUseMana = false;
                Debug.Log("Out of mana! Waiting for recharge...");
            }
        }

        if (!canUseMana)
        {
            timeSinceLastUse += Time.deltaTime;
            if (timeSinceLastUse >= 15f)
            {
                currentMana = maxMana;
                canUseMana = true;
                Debug.Log("Mana recharged! Current mana: " + currentMana);
            }
        }
        else if (currentMana < maxMana)
        {
            currentMana += manaRegenRate * Time.deltaTime;
            currentMana = Mathf.Clamp(currentMana, 0f, maxMana);
            Debug.Log("Mana regenerating... Current mana: " + currentMana);
        }
    }
}

In questo script, abbiamo una variabile “maxMana” che rappresenta la quantità massima di mana disponibile, una variabile “currentMana” che rappresenta la quantità di mana corrente e una variabile “manaUsage” che rappresenta la quantità di mana utilizzata ogni volta che il giocatore preme il tasto spazio.

Inizialmente, il mana è pieno e il giocatore può utilizzarlo. Quando il giocatore preme il tasto spazio, la quantità di mana corrente viene ridotta di “manaUsage” e viene visualizzato un messaggio di log sulla console di debug di Unity.

Se la quantità di mana corrente diventa inferiore o uguale a zero, il giocatore non può più utilizzare il mana e viene visualizzato un messaggio di log. In questo caso, viene attivato un timer di 15 secondi che viene utilizzato per far rigenerare il mana.

Dopo che sono trascorsi 15 secondi, il mana viene ripristinato al suo valore massimo e il giocatore può usarlo di nuovo. Quando la quantità di mana corrente è inferiore al suo valore massimo, il mana viene rigenerato ad un tasso “manaRegenRate”.

L’output del codice sarà il seguente:

Mana used! Current mana: 80
Mana regenerating... Current mana: 81.0
Mana regenerating... Current mana: 82.0
Mana regenerating... Current mana: 83.0
Mana regenerating... Current mana: 84.0
Mana regenerating... Current mana: 85.0
Mana used! Current mana: 65
Mana regenerating... Current mana: 66.0
Mana regenerating... Current mana: 67.0
Mana regenerating... Current mana: 68.0
Mana regenerating... Current mana: 69.0
Mana regenerating... Current mana: 70
/ 5
Grazie per aver votato!
mycus
Author: mycus