unity-game-engine - 基于积分的游戏升级公式

标签 unity-game-engine levelup

我知道这个问题有一个简单的答案 - 我只是想不出。我正在开发一款策略游戏,其中风景会根据点数升级其级别。所以我正在寻找的结果是这样的......

从点开始的等级...

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/

相关文章:

node.js - 如何访问 Google Chrome 的 IndexedDB/LevelDB 文件?

ios - Unity - 如何在 iOS 上隐藏主页栏(延迟系统手势并隐藏主页按钮)

unity-game-engine - Unity3D 如何在不需要 PhysX 运行时的情况下使用 PhysX?

ios - Vuforia IOS 崩溃。由于内存问题而终止

c# - 当我尝试从 Unity StandardAssets 脚本访问 `EnginePower` 时出现错误

c# - BaseVertexEffect 中的 ModifyVertices 移动到 BaseMeshEffect 中的位置

node.js - 在nodejs中查询leveldb数据库中的值