2017-09-17 9 views
0

J'essaie d'implémenter le système de progression niveau/xp.Formule de progression du jeu (niveau et xp)

logique principale est le suivant: pour les utilisateurs de 1er niveau devrait obtenir 1000 de xp pour 2 - 2000 3-4000 4-8000 5-16000 6-32000 et donc ..

Comme vous pouvez le voir, je veux utiliser la progression géométrique I fait progression linéaire (unité C#):

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

mais comment sur la progression géométrique? Si quelqu'un a une telle expérience, s'il vous plaît partager Merci

+2

Eh bien, je vois que vous voulez utiliser '2^(n-1) * 1000'. Est-ce que je me trompe –

Répondre

0

Cela devrait fonctionner.

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

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

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

Pas tout à fait sûr que ce soit ce que vous recherchez, et je suis à peu près un novice, mais peut-être cela peut vous aider à trouver ce que vous recherchez. Cela devrait faire ce que vous voulez.

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; 
    } 
} 

Espérons que cela vous a aidé de quelque façon que ce soit.