2016-08-23 3 views
-1

Ich entwickle ein Spiel mit JavaME und ich muss die Anzahl der Kollisionen in meinem Spiel zählen. Ich verwende die collidesWith() Methode, und ich bin so etwas wie dies zu tun:Wie kann die Anzahl der Kollisionen mit CollidesWith() in JavaME gezählt werden?

private void checkCollision() 
{ 
    if (spBoy.collidesWith(spBall, true)) { 
      this.collides++; 
      if (this.collides == 3) { 
       //here I will show a Game Over image. 
      }     
    }   
} 

Wie Sie sehen können, wenn die Anzahl der Kollisionen 3 ist, ist das Spiel vorbei ist, aber ich kann das nicht zählen Anzahl der Kollisionen, denn wenn ich this.collides inkrementiere, habe ich automatisch 3 Kollisionen auf einmal.

Antwort

0

Ich nehme an, Sie rufen checkCollision() innerhalb Ihrer Hauptschleife. Dies bedeutet, dass es 30-60 Mal pro Sekunde aufgerufen wird. Wenn sich die beiden Sprites während dieser Sekunde überhaupt nicht bewegen, wird es 30-60 Kollisionen geben - weil es in jedem Zyklus wahr ist. Was Sie tun möchten, ist ein Timer hinzufügen, wo Ihr spBoy Sprite nicht verletzt werden kann.

int safeTimer = 0; 
int timeSinceLastLoop; // Add this calculation to your loop 

private void checkCollision() { 
safeTimer-= timeSinceLastLoop; 
if (spBoy.collidesWith(spBall, true) && safeTimer<=0) { 
    this.collides++; 
    safeTimer=3000; // Wait 3 seconds till vulnerability 
    if (this.collides == 3) { 
    //here I will show a Game Over image. 
    }     
}   
} 
Verwandte Themen