Top.Mail.Ru
Ответы

Не получается сделать рандомное выпадение лута в юнити

Я делаю рандомное выпадение лута из сундуков. Есть 4 вида предметов и если тебе выпал один из них, то из других сундуков он больше не выпадет. Я уже делал список и удалял от туда предметы. Но всё бестолку. Первый раз работает нормально. Второй и третий - если особо повезёт. А четвёртый вообще никогда не работает. Помогите пж. Заготовка -
public List<GameObject> Loot;

if (UseBox)

{

int Rand = Random.Range(1, 5);

Debug.Log(Rand);

GameObject.Find("Box").GetComponent<UseObject>().Used = true;

if(Rand == 1 && !transform.GetComponent<Inventory>().BPad)

{

transform.GetComponent<Inventory>().BPad = true;

Loot.RemoveAt(Rand);

}

if (Rand == 2 && !transform.GetComponent<Inventory>().BPS)

{

transform.GetComponent<Inventory>().BPC = true;

Loot.RemoveAt(Rand);

}

if (Rand == 3 && !transform.GetComponent<Inventory>().BPhone)

{

transform.GetComponent<Inventory>().BPhone = true;

Loot.RemoveAt(Rand);

}

if (Rand == 4 && !transform.GetComponent<Inventory>().BPS)

{

transform.GetComponent<Inventory>().BPS = true;

Loot.RemoveAt(Rand);

}

}

По дате
По рейтингу
Аватар пользователя
Новичок

А ты не удаляй из списка, а помечай как-нибудь.

Аватар пользователя
Просветленный

у тебя 5 предметов. 1й (0й в массиве) - пусть книга.
Во-первых, и интервал тебе нужен от 0 до 4, а не от 1 до 5.
Во-вторых, пускай выпал 0. Тогда ты книгу удалил. Интервал сократился до 0 - 3, и на 0м теперь не книга, а, пускай, кот, который раньше был с индексом 1. А ты все еще думаешь, что у кота индекс 1.

Аватар пользователя

через массив нет ? получить число элементов с него для рандома, удалять предметы по тому же id с массива и как только массив станет пустым перезагрузить его (по новой наполнить) и так по кругу