Sistema de mejora de jugadores en Unity

Este tutorial te guiará en la creación de un sistema de mejora básico en Unity. Los sistemas de mejora son comunes en los juegos y permiten a los jugadores mejorar sus personajes, equipamiento o habilidades con el tiempo. Crearemos un sistema de mejora de ejemplo que permite a un jugador aumentar atributos como la salud, la velocidad y el poder de ataque.

Prerrequisitos

  • Unity Editor instalado.
  • Comprensión básica de C# y el sistema de interfaz de usuario de Unity.
  • Un proyecto configurado con un GameObject de jugador básico y un UI Canvas para mostrar opciones de actualización.

Paso 1: Configurar los atributos del jugador

Primero, crea un script en C# para definir los atributos del jugador que se pueden mejorar. Este script contendrá propiedades como salud, velocidad y poder de ataque.

using UnityEngine;

public class PlayerAttributes : MonoBehaviour
{
    public int health = 100;
    public float speed = 5f;
    public int attackPower = 10;

    public void IncreaseHealth(int amount)
    {
        health += amount;
        Debug.Log("Health increased to " + health);
    }

    public void IncreaseSpeed(float amount)
    {
        speed += amount;
        Debug.Log("Speed increased to " + speed);
    }

    public void IncreaseAttackPower(int amount)
    {
        attackPower += amount;
        Debug.Log("Attack Power increased to " + attackPower);
    }
}

Adjunte este script PlayerAttributes a su GameObject de jugador para administrar sus atributos.

Paso 2: Crear el administrador de actualizaciones

A continuación, crea un script UpgradeManager para gestionar las opciones de mejora y aplicarlas a los atributos del jugador. Este script te permitirá controlar cuánto cuesta cada mejora y cuánto aumenta los atributos del jugador.

using UnityEngine;

public class UpgradeManager : MonoBehaviour
{
    public PlayerAttributes player;
    public int healthUpgradeCost = 50;
    public int speedUpgradeCost = 30;
    public int attackUpgradeCost = 40;

    public void UpgradeHealth()
    {
        if (CurrencySystem.Instance.SpendCurrency(healthUpgradeCost))
        {
            player.IncreaseHealth(10); // Increase health by 10
        }
    }

    public void UpgradeSpeed()
    {
        if (CurrencySystem.Instance.SpendCurrency(speedUpgradeCost))
        {
            player.IncreaseSpeed(0.5f); // Increase speed by 0.5
        }
    }

    public void UpgradeAttackPower()
    {
        if (CurrencySystem.Instance.SpendCurrency(attackUpgradeCost))
        {
            player.IncreaseAttackPower(5); // Increase attack power by 5
        }
    }
}

Este script UpgradeManager verifica si el jugador tiene suficiente dinero para cada mejora y luego aplica la mejora si es asequible. A continuación, agregaremos un sistema de dinero simple para administrar los costos de las mejoras.

Paso 3: Crear un sistema monetario simple

Crearemos un sistema monetario básico que registre la moneda del jugador y le permita gastarla en mejoras. Esto se puede extender a cualquier economía del juego.

using UnityEngine;

public class CurrencySystem : MonoBehaviour
{
    public static CurrencySystem Instance;
    public int currency = 100;

    private void Awake()
    {
        if (Instance == null)
            Instance = this;
        else
            Destroy(gameObject);
    }

    public bool SpendCurrency(int amount)
    {
        if (currency >= amount)
        {
            currency -= amount;
            Debug.Log("Currency spent: " + amount + ". Remaining: " + currency);
            return true;
        }
        else
        {
            Debug.Log("Not enough currency.");
            return false;
        }
    }

    public void AddCurrency(int amount)
    {
        currency += amount;
        Debug.Log("Currency added: " + amount + ". Total: " + currency);
    }
}

Este script CurrencySystem puede agregar y gastar moneda, y está implementado como un singleton para que puedas acceder a él fácilmente desde otros scripts. Adjúntalo a un GameObject en la escena.

Paso 4: Configurar la interfaz de usuario para las actualizaciones

Para que los jugadores puedan interactuar con el sistema de mejoras, crea una interfaz de usuario en Unity con botones para cada opción de mejora. A continuación, te indicamos cómo hacerlo:

  1. Crea un Canvas en tu escena (GameObject > UI > Canvas).
  2. Agregue botones al lienzo y etiquetélos como "Upgrade Health,", "Upgrade Speed," y "Upgrade Attack".
  3. Adjunte el script UpgradeManager a un GameObject en la escena y asigne su GameObject de jugador a su campo player en el Inspector.
  4. Vincula el evento On Click de cada botón para llamar a la función de actualización adecuada (por ejemplo, UpgradeManager.UpgradeHealth()).

Paso 5: Prueba del sistema de actualización

Ejecuta el juego e intenta presionar los botones de mejora. Cada mejora debería aplicarse a los atributos del jugador y el CurrencySystem debería reducir la moneda en consecuencia. Usa el registro de depuración para confirmar que los atributos y la moneda se actualizan como se espera.

Conclusión

Creamos un sistema de mejoras básico en Unity, que incluye atributos de jugador, un sistema de moneda y un administrador de mejoras. Puedes personalizar este sistema para agregar más mejoras, aumentar los costos de mejora de manera dinámica o incluso agregar nuevos tipos de mejoras según los requisitos de tu juego. Esta base se puede expandir para crear mecánicas de mejora más complejas y atractivas en tus juegos.