У меня проблемы с стрельбой персонажа. Когда SPACE кнопка нажата стрельба персонажа одна пуля. Но когда я нажимаю SPACE, например, дважды я должен был выстрелить двумя пулями из своего персонажа. К сожалению, в то время у меня была только одна пуля, и когда моя пуля сталкивается с чем-то (например, стена), только тогда стреляет вторая вторая пуля! Я понимаю, что ArrayList обновляет только одну марку в то время и когда эта пуля удаляется, а затем обновляйте другую. Как мне нужно получить двойной эффект (или даже больше) Bullets?Съемка более чем одной пули
Вот мой класс игрока
public class CoolGuy extends GameObject{
private ArrayList<PlayerBullet> bullets;
/*Tones of code here */
public void shoot(float delta){
if(PlayerBullet.shoot){
if(index != 0){
index++;
}
bullets.add(new PlayerBullet(full.x, full.y + sprite.getHeight()/2 - 30));
}
}
public void update(float delta) {
if(bullets.size() > 0){
if(bullets.get(index) != null){
bullets.get(index).update(delta);
}
for(GameObject t : list){
if(t instanceof Brick){
if(bullets.size() > 0 && bullets.get(index) != null && bullets.get(index).hits(t.getHitBox()) == 1){
bullets.remove(index);
}
}
}
}
}
}
А вот мой пуля класс
public class PlayerBullet extends ItemObject{
private Sprite sprite;
private Rectangle full;
public static boolean shoot;
public PlayerBullet(int x, int y){
......
......
}
public int hits(Rectangle r) {
if(full.overlaps(r)){
return 1;
}
return -1;
}
public void update(float delta) {
full.x += (delta * 500);
setPosition(full.x,full.y);
}
}
А вот в моем главном классе
player1.update(Gdx.graphics.getDeltaTime());
if(Gdx.input.isKeyJustPressed(Input.Keys.SPACE)){
player1.shoot(Gdx.graphics.getDeltaTime());
}
Ваш метод 'update' должен начинаться с чего-то вроде' for (Bullet b: bullets) b.update (delta); '. (Только комментарий, а не ответ, потому что никто не может знать, что ... не так с вашим кодом ...) – Marco13
Если вы не можете понять, почему это происходит, вам будет очень сложно помочь вам. – CaffeineToCode
Вы обновляете только одну пулю, которая находится в «индексе». Создайте цикл for, чтобы просмотреть все записи в ArrayList и вызвать update() для каждого из них. –