Привет, ребята, поэтому я создал простую игру с летающим вертолетом, в котором вам нужно уклоняться от ракет. Я хочу удалить все ракеты, созданные на экране, если true. То, что происходит, это только снимается, если вертолет умирает из-за удара ракеты, но если он умирает, ударяясь о землю, сообщение «игра над» показывает, но ракеты не удаляются!Удаление всех прямоугольников в прямоугольной матрице (LIBGDX)
Я попытался с помощью
if(heliR.overlaps(missiles)){gameOver=true; Iter.remove; }
Но как то, что я сказал, что все ракеты удаляются только если бы я умер, ударив ракету, может кто-нибудь помочь мне в этом?
Вот мой код:
@Override
public void create()
{
batch = new SpriteBatch();
camera=new OrthographicCamera();
camera.setToOrtho(false,800,480);
restart=TimeUtils.nanoTime();
click=TimeUtils.nanoTime();
//fonts
font=new BitmapFont();
font1=new BitmapFont();
font2=new BitmapFont();
font.setColor(Color.RED);
font1.setColor(Color.BLACK);
font2.setColor(Color.WHITE);
font.setScale(3);
font1.setScale(1);
font2.setScale(2);
//score
points=0;
lastScore=TimeUtils.nanoTime();
//background
Texture texture=new Texture(Gdx.files.internal("background.png"));
background=new TextureRegion(texture,0,0,800,480);
//logo
logo=new Texture(Gdx.files.internal("logo.png"));
logoR=new Rectangle();
logoR.x=230;
logoR.y=240;
logoR.width=230;
logoR.height=100;
//helicopter
heli=new Texture(Gdx.files.internal("helicopter.png"));
heliR=new Rectangle();
heliR.x=280;
heliR.y=400;
heliR.width=heli.getWidth()-15;
heliR.height=heli.getHeight()-15;
//Sounds
heliSound=Gdx.audio.newSound(Gdx.files.internal("helicopter.wav"));
heliLanding=Gdx.audio.newSound(Gdx.files.internal("helicopter_landing.wav"));
collision=Gdx.audio.newSound(Gdx.files.internal("collision.wav"));
//missile
missileImg=new Texture(Gdx.files.internal("missile.png"));
missiles=new Array<Rectangle>();
}
public void spawnMissile(){
Rectangle missile=new Rectangle();
missile.y=MathUtils.random(60,400);
missile.x=mX;
missile.width=missileImg.getWidth()-15;
missile.height=missileImg.getHeight()-10;
missiles.add(missile);
lastMissile=TimeUtils.nanoTime();
velocity=250;
}
@Override
public void render()
{
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
batch.begin();
batch.draw(background,backGroundX-800,0,800,480);
batch.draw(background,backGroundX,0,800,480);
batch.draw(heli,heliR.x,heliR.y);
if(justStart==false && gameOver==false){
font2.draw(batch,"Points:"+points,345,480);}
//missile
for(Rectangle missile: missiles){
batch.draw(missileImg,missile.x,missile.y);
}
//game over
if(gameOver==true){
heliR.y=250;
heliR.x=330;
font.draw(batch,"Game Over",280,400);
font1.draw(batch,"[Long press on the screen to restart]",275,230);
font1.draw(batch,"Your points:"+points,348,250);
if(Gdx.input.isTouched()){
longClick+=1;
if(longClick==35){
gameOver=false;
points=0;
longClick=0;
heliR.y=300;
heliR.x=30;
}
}else{
if(TimeUtils.nanoTime()- click > 2000000){longClick=0;}
}
}
//starting game
if(justStart==true){
heliR.y=250;
heliR.x=330;
font2.draw(batch,"Touch the screen to start",230,230);
batch.draw(logo,logoR.x,logoR.y);
font1.draw(batch,"Developed by:Monzterr",5,15);
if(Gdx.input.isTouched()){
justStart=false;
heliR.y=300;
heliR.x=30;
}
}
batch.end();
//game physics
if(justStart==false&&gameOver==false){
//missile
if(TimeUtils.nanoTime()-lastMissile > 1000000000){spawnMissile();}
Iterator <Rectangle> iter=missiles.iterator();
while(iter.hasNext()){
Rectangle missile= iter.next();
missile.x-=velocity*Gdx.graphics.getDeltaTime();
if(missile.x<=-10){iter.remove();}
if(missile.overlaps(heliR)){
gameOver=true;
collision.play();
}
if(gameOver==true){
iter.remove();
}
}
//background
backGroundX= backGroundX-100*Gdx.graphics.getDeltaTime();
if(backGroundX<=0){
backGroundX=800;
}
//score
if(TimeUtils.nanoTime()-lastScore>2000000000){
points=points+1;
lastScore=TimeUtils.nanoTime();
}
//gravity
if(Gdx.input.isTouched()){
heliR.y+=5;
//heliLanding.play();
}else{
heliR.y-=5;
//heliLanding.pause();
}
}
//borders
if(heliR.y>=400){
heliR.y=250;
}
if(heliR.y<=56){
heliR.y=56;
gameOver=true;
mX=800;
collision.play();
}
}
@Override
public void dispose()
{
}
@Override
public void resize(int width, int height)
{
}
@Override
public void pause()
{
}
@Override
public void resume()
{
}
Извините за грязный код, который я только начал изучать программирование на прошлой неделе.