现在,我们正在编写一个射击游戏,您将在其中扮演一架飞机的任务,当然,它的任务是射击敌人。我们有两种不同的阶级,一种是子弹,另一种是敌人。我们在检查这两个元素是否相互冲突方面遇到麻烦。
我们已经尝试比较这两个元素的x坐标和y坐标,但这似乎没有用。
void hit() {
for(int i = 0; i < Bullet.size(); i++) {
Bullet bullet = (Bullet) Bullet.get(i);
Enemy enemy = (Enemy) enemies.get(i);
if(bullet.x < enemy.x + enemy.l
&& enemy.x > enemy.x - enemy.l
&& enemy.y < bul.y) {
enemy.health -= 1;
println("Hit");
if(enemy.health <= 0) {
enemy = null;
// enemies.remove(i);
}
}
}
}
bul是子弹的数组列表,enm是敌人的列表
最佳答案
问题是检查碰撞时只有一个for-loop
。因此,您实际上是在检查#1子弹是否击中了#1敌人。您将需要两个for-loop
来针对每个敌人检查每个子弹。
void hit() {
for(int i = 0; i < Bullet.size(); i++)
{
Bullet bul = (Bullet) Bullet.get(i);
for(int j=0; j<enemies.size(); j++){
Enemy enm = (Enemy)enemies.get(j);
if(bul.x < enm.x + enm.l && bul.x > enm.x - enm.l && enm.y<bul.y)
{
enm.health -= 1;
println("Hit");
if(enm.health <= 0)
{
enm = null;
// enemies.remove(i);
}
}
}
}
}
关于java - 您如何知道不同数组列表中的两个元素是否冲突?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55470933/