gpt4 book ai didi

java - 如何延迟每一颗子弹? (Java-Slick2d-游戏)

转载 作者:行者123 更新时间:2023-12-01 18:51:14 25 4
gpt4 key购买 nike

(事件监听器位于另一个类中)当 Game.render = true 时,我会得到源源不断的子弹,看起来更像激光束,我希望有间隙。我的意思是,我希望生成的子弹就像是从机枪中发射的一样。我知道我应该添加一个时间或其他东西,但我不知道如何做到这一点,以获得我想要的效果。任何帮助将不胜感激,因为我已经尝试让它工作大约一个小时了。

import java.util.ArrayList;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;

public class Bullet {

// ArrayList
@SuppressWarnings("unchecked")
static ArrayList<Bullet> arrL = new ArrayList();

public Bullet(int x , int y) throws SlickException{



}

public static void update(GameContainer gc, int u) throws SlickException{

// when the left mouse button is clicked Game.fire = true, the key listener is in another class
if(Game.fire){

Bullet b = new Bullet(5,5);
arrL.add(b);
reloaded = false;

} if(!reloaded){



}
}

public static void renderBullets(GameContainer gc, Graphics g, int x, int y) {

// draws a new bullet for every 'bullet object' in the ArrayList called arrL
for(Bullet b : arrL){

g.drawRect(x,y,10,10);
x++;

}
}
}

最佳答案

在这种情况下,我最常做的就是添加一个时间变量,我从每次更新中减去增量(您拥有的变量 u),直到它低于 0,此时我将其重置:

// Set this to whatever feels right for the effect you're trying to achieve.
// A larger number will mean a longer delay.
private static int default_bullet_delay = 500;

private static int time = 0;

public static void update (GameContainer gc, int u) throws SlickException {
time -= u;
if (time <= 0 && Game.fire) {
fireBullet(); // Replace this with your code for firing the bullet
time = default_bullet_delay; // Reset the timer
}

// The rest of the update loop...
}

基本上,即使 Game.fire 为 true,子弹在计时器倒计时之前也不会发射。一旦发生这种情况,计时器就会被设置,直到计时器再次倒计时,下一颗子弹才能发射。如果您将其设置为相当小的值,那么每个项目符号之间应该有一点间隙。

关于java - 如何延迟每一颗子弹? (Java-Slick2d-游戏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15859993/

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