gpt4 book ai didi

java - 游戏计时器伤害延迟

转载 作者:行者123 更新时间:2023-11-30 07:18:29 25 4
gpt4 key购买 nike

我和我的一个 friend 正在开发一款游戏,基本上,我们设置了一个碰撞箱,如果我们的角色击中它(一只蜘蛛),角色就会失去生命值。

因为我们使用的是 for 循环,所以不可避免地会发生,玩家会 1 1 1 地失去生命值,但速度快到人眼无法看到。因此,我们需要一个计时器、暂停或玩家每击中蜘蛛的 x 时间量的东西。这是我们的代码:

        if (ResetEntities.spiderObj.intersects(ResetEntities.blueCharacterObj)) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i < 100; i++) {
if (ResetEntities.blueHealth < 0) {
ResetEntities.blueHealth = 0;
Frame.blueHealthLabel.setText("Health: "
+ ResetEntities.blueHealth);
} else {
ResetEntities.getBlueHealth(ResetEntities.blueHealth - 1);
Frame.blueHealthLabel.setText("Health: "
+ ResetEntities.blueHealth);
}
}
}

在这段代码中,我们有一个 if 语句来检查交集。我试着让脚本 hibernate (我意识到 10 非常快,但是 1000 非常滞后,所以 Thread#sleep 不是我想象的方式)。然后我们有一个 for 语句运行 100 次(即玩家的健康)。然后我们有一个 if 看看健康是否低于 0,设置回 0,这样玩家就不会得到负健康。如果它不低于 0,我们执行 else 并减去 1 生命值。但是正如我所说,这运行得太快以至于看不到。

有什么帮助吗?

最佳答案

传统的方法——在我看来最好的方法——是让受伤的角色在特定时间点之前无敌:当角色受伤时,检查游戏时间线(或者如果你没有然后是当前的毫秒数)然后添加一个特定的时间,例如 1 秒(或字符相关的恢复时间)并记住字符对象中的时间戳。想要伤害角色的 gametick 首先检查角色是否仍处于隐藏的刀枪不入状态。这特别好,因为通常人们并不真的希望多个线程更新游戏状态。

关于java - 游戏计时器伤害延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15342630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com