2017-09-17 6 views
0

Ich versuche Level/XP Progressionssystem zu implementieren.Spielfortschrittsformel (Level und XP)

Haupt Logik weiter: für 1. Ebene Benutzer sollte 1000 von xp für die 2. bekommen - 2000 3-4000 4-8000 5-16000 6-32000 und so ..

Wie Sie können sehen, möchte ich geometrischer Progression I lineare Progression (Einheit C#) hergestellt:

float level = (Mathf.Sqrt (100 * (2 * experience + 25)) + 50)/100; 

aber wie wäre es geometrischer Progression? Wenn jemand solche Erfahrung haben, teilen Sie bitte Dank

+2

Nun, ich sehe, dass Sie '2^(n-1) verwenden möchten * 1000'. Versteh ich mich? –

Antwort

0

Dies sollte funktionieren.

Float _CurrentLevelExp = 10; 
Int _GeometricProgressionFactor = 3; 
Float _NextLevelExp; 

void GetNextLevelExp(){ 
_NextLevelExp = _CurrentLevelExp * 
_GeometricProgressionFactor; 
} 

void IncreaseLevel(){ 
If (_NextLevelExp <= _CurrentLevelExp){ 
_CurrentLevelExp = _NextLevelExp; 
GetNextLevelExp(); 
} 
} 
0

Nicht ganz sicher, ob dies ist, was Sie nach, und ich bin so ziemlich ein Anfänger, aber vielleicht kann dies helfen Sie kommen mit dem, was Sie nach. Dies sollte tun, was Sie wollen.

int currentXP; 
int currentLvL; 
int baseXP = 1000; 

if(currentXP == nextLvL()) 
    { currentLvL++;} 

nextLvL() 
{ 
    if(currentXP < baseXP) 
     {return} 
    else if (currentXP == baseXP) 
     {return baseXP;} 
    else 
    { 
     int nextLvLXP = baseXP; 
     for(i=0; i < currentLvL; i++) 
      {nextLvLXP += nextLvLXP;} 
     return nextLvLXP; 
    } 
} 

Hoffe das half dir in keiner Weise.