首页 > 解决方案 > 基于积分的游戏升级公式

问题描述

我知道对此有一个简单的答案——我只是想不出。我正在开发一个策略游戏,其中风景根据积分升级其水平。所以我正在寻找的结果是......

从点水平...

1 <= 1  
2 <= 2,3  
3 <= 4,5,6  
4 <= 7,8,9,10  
5 <= 11,12,13,14,15

你可以看到这是怎么回事。那么谁能提醒我这样做的简单公式,这样我就可以离开并羞愧地低下头?

标签: unity3dlevelup

解决方案


您描述的序列是一个非常知名的序列,称为三角数序列,由以下公式定义:

maxpt = (lv * (lv + 1)) / 2

在您的特定情况下,此公式给出了maxpt您可以拥有并且仍处于 level的最大点数lv

但是你想要它的反面。您想知道lv给定点数您将达到的水平pt。这被称为数字的三角根(类似于平方根)。

您可以通过 Bhaskara 方程直接反转公式,但您需要做一些技巧来更正基本索引。这给出了:

lv = (int)((Math.sqrt(8 * (pt - 1) + 1) - 1) / 2) + 1

这适用于pt >= 1. 只需返回 0 即可避免浮点错误(负数的pt = 0平方根)。

不过,您肯定可以通过 Internet 找到更优雅的解决方案。


推荐阅读