0
所以我需要檢測存儲在兩個不同數組或arrayLists中的多個對象的衝突。我已確認碰撞檢測方法本身運行正常。問題是碰撞的對象應該會消失並從數組中移除,我不知道如何去解決這個問題。檢測數組中對象之間的衝突
public class GamePanel extends PApplet{
private boolean myRunningStatus;
private final int HEIGHT = 700;
private final int WIDTH = 1200;
private final int SHOT_SPEED = -20;
private int numStars = 0, numEnemies = 0;
private Hero hero;
private Enemy[] enemies;
private List <Star> stars;
public GamePanel(){
myRunningStatus = true;
createEnemies();
createStars();
createHero();
updateEnemies();
}
public void createEnemies(){
enemies = new Enemy[10];
for (int i=0; i<enemies.length; i++){
enemies[i] = new Enemy(random(1, WIDTH), random(1, HEIGHT), 5, 20);
}
}
public void createHero(){
hero = new Hero(mouseX, mouseY);
}
public void createStars(){
stars = new ArrayList <Star>();
}
public Star generateStar(){
Star star = new Star(hero.getHeroX(), hero.getHeroY());
return star;
}
public void setup(){
background(255);
size(WIDTH, HEIGHT);
hero.render(this);
}
public void draw(){
if(myRunningStatus){
background(255);
hero.render(this);
for(int i=0; i<enemies.length; i++){
enemies[i].render(this);
enemies[i].move();
}
for(int i=0; i<stars.size(); i++){
if(stars.get(i) != null){
stars.get(i).render(this);
stars.get(i).move(SHOT_SPEED);
if(stars.get(i).getYPos() < 0){
stars.remove(i);
}
}
}
}
}
//this is the method I'm using to find the collisions between the objects and remove them
public void updateEnemies(){
for(int i=0; i<enemies.length; i++){
for(int j=0; j<stars.size(); j++){
if(enemies[i].starHit(stars.get(j))){
stars.set(j, null);
enemies[i] = null;
}
}
}
}
public void mouseMoved(){
if(myRunningStatus){
hero.setHeroX(mouseX);
hero.setHeroY(mouseY);
}
}
public void mouseClicked(){
for (int i=0; i<10;){
stars.add(i, generateStar());
break;
}
}