Menu
CoddyTech

Revisão: Tabela de Loot

Parte da seção Arquitetura de jogos no Unity do Journey de Unity da Coddy. Lição 18 de 50.

challenge icon

Desafio

Fácil

Um baú de tesouro deixa cair um item cada vez que você pressiona Space. Escreva LootChest.cs. A cena preenche a tabela de itens no Inspector, então os nomes devem corresponder:

  • Um enum Rarity com Common, Rare, Epic e Legendary, nessa ordem.
  • Uma classe LootEntry que o Inspector possa exibir, com uma string itemName, um GameObject prefab e um Rarity rarity, e no baú uma List<LootEntry> pública chamada table. A tabela da cena contém a Maçã e o Pão (Common), o Anel de Prata (Rare), o Ovo de Dragão (Epic) e a Coroa Dourada (Legendary), nessa ordem.
  • public int WeightOf(Rarity rarity) fornece o peso de uma entrada com base em sua raridade: Common 10, Rare 4, Epic 2, Legendary 1. public int TotalWeight() soma os pesos de toda a tabela.
  • public LootEntry Pick(int roll), para um sorteio de 0 até, mas sem incluir, TotalWeight(), percorre a tabela em ordem, cada entrada cobrindo tantos sorteios quanto seu peso: sorteios de 0 a 9 dão a Maçã, de 10 a 19 o Pão, de 20 a 23 o Anel de Prata e assim por diante.
  • Space faz uma única rolagem de Random.Range(0, TotalWeight()), seleciona essa entrada, gera seu prefab 1.5 unidades acima do baú e registra sua raridade e nome, como em Rare: Silver Ring.

Pressione Play, abra o baú algumas vezes e depois Check.

Experimente você mesmo

using System.Collections.Generic;
using UnityEngine;

public class LootChest : MonoBehaviour
{
}

Todas as lições de Arquitetura de jogos no Unity