gpt4 book ai didi

java - 正确显示exp栏

转载 作者:行者123 更新时间:2023-12-01 13:25:39 26 4
gpt4 key购买 nike

我最近开始摆弄 LWJGL,我正在制作一个小游戏来测试一些东西。我想尝试制作一个 EXP 栏,并认为这会相当容易。我几乎完成了它,直到我遇到了一个大问题。该问题是在屏幕上正确显示填满的exp栏。

游戏窗口宽度为 1280 像素,高度为 720 像素。 EXP 条位于窗口的最底部,高 10 像素,并延伸到窗口的整个宽度。随着等级的提高,升级所需的经验值也会增加。我需要一些帮助来显示您当前拥有的经验值。当你第一次开始时,你需要 100 exp 才能升级。例如,假设我有 50 经验。我需要显示exp栏已填充50%。我要求一个公式来做到这一点。

我尝试在互联网上寻找答案,但没有一个有效,尽管有一些看起来效果很好。

渲染填充表达式的当前代码:

glColor3f(1f, 0f, 1f);
glBegin(GL_QUADS);
glVertex2i(x, y); // Upper Left
glVertex2i(x, y); //Upper Right
glVertex2i(x, y + height); //Bottom Right
glVertex2i(x, y + height); //Bottom Left
glEnd();

最佳答案

找出玩家拥有的经验百分比,并将其乘以栏的最大宽度。

int currentXP;
int lastLevelXP;
int nextLevelXP;
int xpBetweenLevels = nextLevelXP - lastLevelXP;
int xpSinceLevelUp = currentXP - lastLevelXP;
float percentageOfXP = xpSinceLevelUp / (float) xpBetweenLevels;
int barWidth = (int) (percentageOfXP * maxWidth); // maxWidth would be the screen's width

// rendering must use 4 unique points
glColor3f(1f, 0f, 1f);
glBegin(GL_QUADS);
glVertex2i(x, y);
glVertex2i(x + (percentageOfXP * maxWidth), y);
glVertex2i(x + (percentageOfXP * maxWidth), y + height); // where y = 10
glVertex2i(x, y + height);
glEnd();

这样,如果玩家处于第 2 级(从 70 XP 开始),则拥有 120 XP,而第 3 级从 170 XP 开始:

currentXP = 120
lastLevelXP = 70
nextLevelXP = 170
xpBetweenLevels = 170 - 70 = 100
xpSinceLevelUp = 120 - 70 = 50
percentageOfXP = 50 / 100 = 0.5

barWidth = 0.5 * 1280 = 640 = half of screen's width

另请注意,虽然您的代码只使用了 2 个不同的顶点(这会产生一条线),但我的代码使用了 4 个顶点来绘制一个四边形。

编辑

由于您的代码在每个级别都会将 XP 重置为 0,并且只是增加所需的数量,因此唯一需要的修改是将 lastLevelXP 设置为 0,并将 nextLevelXP 设置为XP需要升级。因此,xpBe​​tweenLevels 变为 nextLevelXP - 0,这是升级所需的总 XP;同样,xpSinceLevelUp 变为currentXP。您所需要做的就是将非渲染代码替换为

int currentXP;
int xpNeeded;
float percentageOfXP = currentXP / (float) xpNeeded;
int barWidth = (int) (percentageOfXP * maxWidth);

关于java - 正确显示exp栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21819987/

26 4 0