我正在制作一个2D游戏,我试图阻止敌人的精灵们互相移动。我已经实现了以下方法,该方法应该检查敌人是否重叠,然后将其中一个移回他们来的方向。然而,这种方法似乎使我的游戏崩溃,因为只有一个敌人被渲染。
这是我的检查方法:
size = enemys.size();
for (int i = 0; i<size; i++){
double x = enemys[i].getEnemyX();
double y = enemys[i].getEnemyY();
for (int s = 1; s<size; s++){
double enemyX = enemys[s].getEnemyX();
double enemyY = enemys[s].getEnemyY();
if (x >= enemyX-5.0 && x <= enemyX+5.0 && y >= enemyY-5.0 && y <= enemyY + 5.0){
double xDir = x - enemyX;
double yDir = y - enemyY;
double hyp = sqrt(xDir*xDir + yDir*yDir);
xDir /= hyp;
yDir /= hyp;
x -= xDir * 5;
y -= yDir * 5;
enemys[s].setEnemyCoord(x,y);
}
}
}*
答案 0 :(得分:1)
您的代码最终会检查每个敌人。
让你的内循环从s=i+1