Система опыта и левелинга - Форум Игроделов
Пт, 03 Май 2024, 17:02 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » HELP & FAQ » Система опыта и левелинга (C# (да-да как в ММО))
Система опыта и левелинга
korveenДата: Вс, 18 Янв 2015, 17:12 | Сообщение # 1
Победитель конкурса GCC
 
Сообщений: 183
Награды: 2
Репутация: 45
Статус: Offline
Посоветуйте как сделать систему опыта и левелинга. (да-да, как в ММО)
При достижении определенных кол-вах опыта уровень растет, текущий опыт в 0, а опыт который нужен появляется. Вот что-то не могу придумать эту всю систему с PlayerPrefs конечно. И еще, хотелось бы хранить в массивах требуемое кол-во опыта для уровня. Подскажите с реализацией.

К примеру массив с требуемым кол-вом опыта:
[0] - 5 (до 1 ур. 5 опыта)
[1] - 10 (до 2 ур. 10 опыта)
[2] - 25
...


 
СообщениеПосоветуйте как сделать систему опыта и левелинга. (да-да, как в ММО)
При достижении определенных кол-вах опыта уровень растет, текущий опыт в 0, а опыт который нужен появляется. Вот что-то не могу придумать эту всю систему с PlayerPrefs конечно. И еще, хотелось бы хранить в массивах требуемое кол-во опыта для уровня. Подскажите с реализацией.

К примеру массив с требуемым кол-вом опыта:
[0] - 5 (до 1 ур. 5 опыта)
[1] - 10 (до 2 ур. 10 опыта)
[2] - 25
...

Автор - korveen
Дата добавления - 18 Янв 2015 в 17:12
NapalmRainДата: Вс, 18 Янв 2015, 21:15 | Сообщение # 2
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
korveen, если как в ММО, то не совсем так.
Создаётся интовый массив, в котором каждый элемент - это количество опыта для получения нового уровня.
Тут можно пойти двумя путями, обычно применяется первый:
интовый массив (правильнее всего хранить его в какой-нибудь статической переменной)
Код на абстрактном языке
Код
levels[1] = 100;
levels[2] = 300;
levels[3] = 700;
...

levels[n] = 100500;

Далее на конктретном персонаже висит компоненл с публичным методом addExp()
Код
public void addExp(int exp) {
   currentexp += xpp;
if (currentexp>=levels[currentlevel+1]) {
currentlevel++;
// аллелуя новый уровень
}
}

Второй, это то, как хотите вы, отличается тем, что при
Код
if (currentexp>=levels[currentlevel+1]) {
currentlevel++;
currentexp = 0;
// соответственно при этом и в массиве хранится не суммарное значение а просто сколько надо опыта набрать
}

Обычно же онуляется параметр % сколько осталось до следующего уровня, а опыт суммируется без обнуления


Сообщение отредактировал NapalmRain - Вс, 18 Янв 2015, 21:15
 
Сообщениеkorveen, если как в ММО, то не совсем так.
Создаётся интовый массив, в котором каждый элемент - это количество опыта для получения нового уровня.
Тут можно пойти двумя путями, обычно применяется первый:
интовый массив (правильнее всего хранить его в какой-нибудь статической переменной)
Код на абстрактном языке
Код
levels[1] = 100;
levels[2] = 300;
levels[3] = 700;
...

levels[n] = 100500;

Далее на конктретном персонаже висит компоненл с публичным методом addExp()
Код
public void addExp(int exp) {
   currentexp += xpp;
if (currentexp>=levels[currentlevel+1]) {
currentlevel++;
// аллелуя новый уровень
}
}

Второй, это то, как хотите вы, отличается тем, что при
Код
if (currentexp>=levels[currentlevel+1]) {
currentlevel++;
currentexp = 0;
// соответственно при этом и в массиве хранится не суммарное значение а просто сколько надо опыта набрать
}

Обычно же онуляется параметр % сколько осталось до следующего уровня, а опыт суммируется без обнуления

Автор - NapalmRain
Дата добавления - 18 Янв 2015 в 21:15
Форум Игроделов » UNITY3D » HELP & FAQ » Система опыта и левелинга (C# (да-да как в ММО))
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024