LibGDX - 在循环中调整火焰速率的最佳方法

Ste*_*ers 3 java timing rate libgdx

我正在用LibGDX制作2D平台游戏/射击游戏.我正在进行这个循环,按住火按钮会导致子弹从主角枪中飞出整个持续时间,同时按下按钮(快速射击).该部分完美且按预期工作.但是,我希望火速稍慢. 目前,循环只是在每个游戏框架上向世界添加一颗子弹,这意味着火速高得离谱.

我一直试图找到一个很好的方法来做到这一点,但无济于事.任何建议都将受到高度赞赏.

循环:

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

noo*_*one 8

你可以使用一个延迟机制,通过一个变量来减少时间,每次击中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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)