0
我正在制作Android的太空射击游戏,并且遇到了敌方和玩家船之间的碰撞检测问题(//侦测与玩家的敌方碰撞)。我很感激任何人都可以用最好的方式来帮助我解决这个问题。看看我的detectCollisions()如下:Android碰撞检测实施
**私人无效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;
}
}
}
}
}
}**
只有当playerFire [y] .posY与敌人[x] .posY – Rajkiran 2012-03-15 16:05:04
完全相同时,条件才为真。如果位置之间的差值小于或等于1,则条件为真。 – 2012-03-15 16:06:30
感谢Rajkiran和Sergey,能否请您告诉我代码应该是什么样子,因为我完全迷路了。 – user1243000 2012-03-15 18:37:09