2015-08-30 4 views
0

Я разрабатываю Android-игру, в которой птица должна уклоняться от приближающихся объектов, используя датчик акселерометра.столкновение в android не обнаружено

Этот код должен обнаружить столкновение, но это не так. Может ли кто-нибудь сказать, в чем проблема?

do{ 
      random(); //for generating random no.k//moving objects using animations. 
      TranslateAnimation animation_plane = new TranslateAnimation(0.0f, 0.0f, 
        0.0f, 800.0f); 
      animation_plane.setDuration(4500); 
      animation_plane.setRepeatCount(i); 
      TranslateAnimation animation_superman = new TranslateAnimation(0.0f, 0.0f, 
        0.0f, 800.0f); 
      animation_superman.setDuration(3000); 
      animation_superman.setRepeatCount(i); 
      TranslateAnimation animation_space = new TranslateAnimation(0.0f, 0.0f, 
        0.0f, 800.0f); 
      animation_space.setDuration(2500); 
      animation_space.setRepeatCount(i); if (answer % 2 == 0) //answer is random int being generated 
       plane.startAnimation(animation_plane); 
      if (answer % 3 == 0) 
       superman.startAnimation(animation_superman); 
      if (answer % 4 == 0 || answer % 5 == 0) 
       spaceship.startAnimation(animation_space); 
    bird_x = bird.getX();//for getting position of objects and bird.   
    bird_y = bird.getY(); 
    plane_x = plane.getX(); 
    plane_y = plane.getY(); 
    superman_x = superman.getX(); 
    superman_y = superman.getY(); 
    spaceship_x = spaceship.getX(); 
    spaceship_y = spaceship.getY(); 
     if(spaceship.getTranslationY()>660) 
      { 
       score+=1; 
       newscore="score = "+score+""; 
       text.setText(newscore); 
      } 
      if(superman.getTranslationY()>660) 
      { 
       score+=1; 
       newscore="score = "+score+""; 
       text.setText(newscore); 
      } 
      if(plane.getTranslationY()>660) 
      { 
       score+=1; 
       newscore="score = "+score+""; 
       text.setText(newscore); 
      } 
     }while(bird.getTranslationX()!=plane.getTranslationX()||bird.getTranslationX()!=spaceship.getTranslationX()||bird.getTranslationX()!=superman.getTranslationX());` 

ответ

0

В случае, если ваше время условие использования & & вместо ||?

Я изо всех сил пытаюсь следовать логике в этой игре, но я предполагаю, что вы получите точку, как только самолет/космический корабль/супермен отправится в нижнюю часть экрана, то есть вы уклонились от него? Если какой-либо из объектов совпадает с положением птицы X, цикл заканчивается, и игра заканчивается?

Вам также может потребоваться проверить, что положение птицы Y совпадает с положением объекта Y.

+0

no он должен использовать || и я также проверил его с позициями Y. –

+0

Если это весь код, который у вас есть для обнаружения столкновения, то я не вижу, где вы сравниваете позицию Y с любой позицией Y объекта. Что-то вроде bird.getTranslationY()! = Plane.getTranslationY() – JibbyJames