Как реализовать множитель покупки нескольких уровней за раз?

Привет всем на DTF, я сейчас разрабатываю свою первую игру и столкнулся с проблемой на решение которой не могу найти ответ.

Я хочу реализовать систему прокачки уровней как в кликерах и разных Idle играх, когда я прокачиваю уровень:

• Тратится золото на покупку уровня

• повышается уровень

• повышается цена на покупку следующего

Всё это реализовано по формуле/коду:

[SerializeField] private GameObject[] TargetObj; // отслеживаемый объект где все методы и хранятся общее число денег и произведённых ресурсов private Environment _actionTarget; // Присвоение компонента private float baseCost = 150f; // базовая цена покупки уровня private float newCost; // новая цена после применения формулы(смотреть ниже) private float multiplier = 1.13f; // множитель private int lvl = 0; // изменяемый уровень public void BuyLvl() // Прокачка уровня объекта { newCost = baseCost * Mathf.Pow(multiplier, lvl); // формула определения новой цены с учётом изменяющегося уровня. if (_actionTarget.CheckMoney(newCost) // Метод который проверяет наличие денег для покупки) { _actionTarget.BuyLvl(newCost); // метод, который вычитает цену из общего числа денег lvl++; // добавляет уровень maxQuantityOre += 7f; // увеличивает производство } else // если нет денег для покупки { print("Net Deneg"); } }

Мне нужно как-то изменить данный метод, чтобы он мог покупать сразу несколько уровней с учётом изменяющейся цены при покупке каждого уровня. То есть нельзя просто взять цену и умножить в десять раз, так как он не учитывает изменение уровня.

Множители будут:

Х1 — для разовой покупки

Х10 — для покупки 10 уровней

Х50 — для покупки 50 уровней

• MAX — покупка максимально возможного количества уровней с учётом количества наличия денег.

Как бы вы реализовали такую функцию в своём коде?

Я использую C# и Unity

Прилагаю картинки с похожей игры.

Похожая прокачка есть в старой Tap Titans.

77
44 комментария

Решение "в лоб":

3
Ответить

Спасибо за ваш код, я похожий почти реализовал но сталкивался с проблемами.

Ответить

То есть нельзя просто взять цену и умножить в десять раз, так как он не учитывает изменение уровня.Сумма геометрической прогрессии, не?

1
Ответить

Надо математику учить, чтобы быть программистом. Пойду учиться)

Ответить

Комментарий недоступен

Ответить

А каким образом вы хотели сделать через enum?

Ответить

Комментарий недоступен

Ответить