我试图实现level/xp级数系统。游戏进程公式(等级和xp)
主逻辑是下一个: 为第一级用户应该得到XP 为第二的1000至2000年3 - 4000 4 - 8000 5 - 16000 6 - 32000 等..
作为你可以看到,我想用几何级数 我做了线性发展(团结C#):
float level = (Mathf.Sqrt (100 * (2 * experience + 25)) + 50)/100;
但如何几何级数? 如果有人有这样的经验,请分享 谢谢
我试图实现level/xp级数系统。游戏进程公式(等级和xp)
主逻辑是下一个: 为第一级用户应该得到XP 为第二的1000至2000年3 - 4000 4 - 8000 5 - 16000 6 - 32000 等..
作为你可以看到,我想用几何级数 我做了线性发展(团结C#):
float level = (Mathf.Sqrt (100 * (2 * experience + 25)) + 50)/100;
但如何几何级数? 如果有人有这样的经验,请分享 谢谢
这应该有效。
Float _CurrentLevelExp = 10;
Int _GeometricProgressionFactor = 3;
Float _NextLevelExp;
void GetNextLevelExp(){
_NextLevelExp = _CurrentLevelExp *
_GeometricProgressionFactor;
}
void IncreaseLevel(){
If (_NextLevelExp <= _CurrentLevelExp){
_CurrentLevelExp = _NextLevelExp;
GetNextLevelExp();
}
}
不能完全确定这是否是你所追求的,我非常新手,但也许这可以帮助你拿出你所追求的。这应该做你想做的。
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;
}
}
希望这对你有所帮助。
在Unity的动画曲线中,还有一种很酷的方式来做类似的事情。 看到我的回答在类似的线程: https://stackoverflow.com/a/45612135/2057543
嗯,我看到你想使用'2 ^(n-1)* 1000'。我错了吗? –