我正在用LibGDX制作2D平台游戏/射击游戏。我遇到了这样的循环:按住开火按钮的同时,按下开火按钮(快速开火)的过程中,子弹会从主角的枪中飞出。该部分工作正常且符合预期。 但是,我希望射速较慢。 目前,循环仅在每个游戏框架上向世界添加子弹,这意味着射速太高了。

我一直在试图找到一种好的方法来做到这一点,但没有成功。任何建议将不胜感激。

循环:

if (keys.get(Keys.FIRE)) {
    player.setState(State.FIRING);
        world.addBullet(new Bullet(1f,1f,0));
}

最佳答案

您可以使用延迟机制,方法是使用一个变量来倒计时,并且每次击中0时,您都会进行一次射击并重置时间,例如,当您希望玩家每0.2秒射击一次时,将其重置为0.2f:

private float fireDelay;

public void render(float deltaTime) {
    fireDelay -= deltaTime;
    if (keys.get(Keys.FIRE)) {
        player.setState(State.FIRING);
        if (fireDelay <= 0) {
            world.addBullet(new Bullet(1f,1f,0));
            fireDelay += 0.2;
        }
    }
}

09-25 18:54