Menu
CoddyTech

Repaso: sortear el botín

Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 22 de 64.

En este capítulo, se colocaron clases serializables, listas y enumeraciones en el Inspector, y la tabla del cofre utiliza las tres. Ahora el cofre hace una tirada en ella.

challenge icon

Desafío

Fácil

Haz que la barra espaciadora abra el cofre y suelte un objeto según su peso.

  1. Escribe public LootEntry Pick(int roll): recorre table; devuelve la entrada cuando roll sea menor que su peso; de lo contrario, resta el peso. Después del bucle, return null;.
  2. Al pulsar la barra espaciadora, elige con Random.Range(0, TotalWeight()), genera su prefab a 1.5 unidades por encima del cofre y registra entry.rarity + ": " + entry.itemName.

Pulsa «Jugar» y la barra espaciadora: la mayoría de las veces aparecerá Common: Apple o Pan. Después, pulsa «Comprobar».

Pruébalo tú mismo

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

public enum Rarity { Common, Rare, Epic, Legendary }

[System.Serializable]
public class LootEntry
{
    public string itemName;
    public GameObject prefab;
    public Rarity rarity;
}

public class LootChest : MonoBehaviour
{
    public List<LootEntry> table;

    public int WeightOf(Rarity rarity)
    {
        switch (rarity)
        {
            case Rarity.Common: return 10;
            case Rarity.Rare: return 4;
            case Rarity.Epic: return 2;
            case Rarity.Legendary: return 1;
        }
        return 0;
    }

    public int TotalWeight()
    {
        int total = 0;
        foreach (LootEntry entry in table) total += WeightOf(entry.rarity);
        return total;
    }

    // Pick(int roll) y la lógica para abrir el cofre con Space van aquí
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Arquitectura de juegos en Unity

Practica por tu cuenta: Playground de Unity