我正在为Android制作太空射击游戏,我遇到了敌人和玩家船之间碰撞检测的一些问题(//检测敌人与玩家的碰撞)。如果有人能帮助我找到解决这个问题的最佳方法,我将不胜感激。看看下面的detectCollisions():
** private void detectCollisions(){
// Detect enemy collision with player; to be revised
for (int z = 0; z < SSEngine.TOTAL_INTERCEPTORS + SSEngine.TOTAL_SCOUTS + SSEngine.TOTAL_WARSHIPS - 1; z++ ){
if(enemies[z].posX <= SSEngine.playerBankPosX
&& enemies[z].posY <= SSEngine.playerBankPosX )
{
player1.applyDamage();
}
}
//Detect Player's fire
for (int y = 0; y < 3; y ++)
if (playerFire[y].shotFired){
for (int x = 0; x < SSEngine.TOTAL_INTERCEPTORS + SSEngine.TOTAL_SCOUTS + SSEngine.TOTAL_WARSHIPS - 1; x++ ){
if(!enemies[x].isDestroyed && enemies[x].posY < 4.25 ){
if ((playerFire[y].posY >= enemies[x].posY - 1
&& playerFire[y].posY <= enemies[x].posY )
&& (playerFire[y].posX <= enemies[x].posX + 1
&& playerFire[y].posX >= enemies[x].posX - 1)){
int nextShot = 0;
enemies[x].applyDamage();
playerFire[y].shotFired = false;
if (y == 3){
nextShot = 0;
}else{
nextShot = y + 1;
}
if (playerFire[nextShot].shotFired == false){
playerFire[nextShot].shotFired = true;
playerFire[nextShot].posX = SSEngine.playerBankPosX;
playerFire[nextShot].posY = 1.25f;
}
}
}
}
}
}**
答案 0 :(得分:0)
您的登记if
错误 -
,
playerFire[y].posY >= enemies[x].posY - 1
是真的
怎么来
playerFire[y].posY <= enemies[x].posY
会成立吗?
你是ANDING真实&amp;&amp;是的,所以它永远是假的。