Advertisement
Maurice_dachef

Unity RPG-style Level System (Generic version)

May 30th, 2020
1,217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.54 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5.  
  6. public class LevelSystem
  7. {
  8.     int lvl;
  9.     int exp;
  10.     int expn;
  11.     int totalExp;
  12.     const int MAX_LEVEL = 100;
  13.  
  14.     public LevelSystem()
  15.     {
  16.         SetStartingExperience();
  17.         Debug.Log("Level: " + lvl + " Experience: " + exp + " Experience Needed: " + expn + " Total Exp: " + totalExp);
  18.     }
  19.  
  20.     public void SetStartingExperience()
  21.     {
  22.         lvl = 1;
  23.         exp = 0;
  24.         expn = GetExperienceNeeded(lvl);
  25.         totalExp = exp;
  26.         return;
  27.     }
  28.  
  29.     public void AddExperience(int amount)
  30.     {
  31.         exp += amount;
  32.         totalExp += amount;
  33.         ExperienceCheck();
  34.     }
  35.  
  36.     private void ExperienceCheck()
  37.     {
  38.         if(exp >= expn)
  39.         {
  40.             LevelUp();
  41.         }
  42.         else
  43.         {
  44.             return;
  45.         }
  46.     }
  47.  
  48.     private void LevelUp()
  49.     {
  50.         if (lvl == MAX_LEVEL)
  51.         {
  52.             return;
  53.         }
  54.         if (lvl != MAX_LEVEL && exp >= expn)
  55.         {
  56.             lvl += 1;
  57.             exp -= expn;
  58.             expn = GetExperienceNeeded(lvl);
  59.             Debug.Log("Player gained a level! Player is now Level " + playerTamer.lvl);
  60.             ExperienceCheck();
  61.         }
  62.     }
  63.  
  64.     private int GetExperienceNeeded(int level)
  65.     {
  66.         double baseXP = 500.0;
  67.         double exponent = 2.0;
  68.         level++;
  69.         int newExp = (int)Math.Ceiling(baseXP * (Math.Pow((double)level, exponent)) - (baseXP * (double)level));
  70.         return newExp;
  71.     }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement