Android обнаружение столкновений - PullRequest
0 голосов
/ 15 марта 2012

Я делаю игру о космической стрельбе для Android, и у меня возникают некоторые проблемы с обнаружением столкновений между вражеским и корабельным игроком (// Обнаружение столкновения противника с игроком).Буду признателен, если кто-нибудь сможет мне помочь с наилучшим подходом к этому.проверьте мои deteCollisions () ниже:

** 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;
                        }
                    }
                }
            }
        }
    }**

1 Ответ

0 голосов
/ 15 марта 2012

Ваш чек на if неверен -

если,

playerFire[y].posY >= enemies[x].posY - 1 верно, то как получится

playerFire[y].posY <= enemies[x].posY останется верным?1011 * И вы ANDING истина && ложь, поэтому она всегда будет ложной.

...