我知道这个问题有一个简单的答案 - 我只是想不出。我正在开发一款策略游戏,其中风景会根据点数升级其级别。所以我正在寻找的结果是这样的......
从点开始的等级...
1 <= 1
2 <= 2,3
3 <= 4,5,6
4 <= 7,8,9,10
5 <= 11,12,13,14,15
你可以看到这是怎么回事。那么谁能提醒我一个简单的公式来做到这一点,这样我就可以羞愧地低下头走开?
最佳答案
您描述的序列是一个众所周知的序列,名为 triangular numbers序列,由以下公式定义:
maxpt = (lv * (lv + 1)) / 2
在您的具体情况下,此公式给出了您可以拥有且仍处于 lv
级别的最大分数 maxpt
。
但你想要相反的结果。您想知道在给定点数 pt
下您将达到哪个级别 lv
。这被命名为 triangular root数字的(类似于平方根)。
您可以直接通过 Bhaskara 方程对公式求逆,但您需要采取一些技巧来纠正基本索引。这给出:
lv = (int)((Math.sqrt(8 * (pt - 1) + 1) - 1) / 2) + 1
这适用于 pt >= 1
。对于 pt = 0
只需返回 0 即可避免浮点错误(负数的平方根)。
您肯定可以找到更优雅的解决方案 over the internet不过。
关于unity-game-engine - 基于积分的游戏升级公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51020077/