我正在用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;
}
}
}