# Kollision (libgdx)



## Javaamateur (22. Jul 2018)

Moin Leute,
habe bei einem kleinem projekt  in java (libgdx) eine Kollision programmiert.
Dabei gibt es einen punkte zähler welcher sich immer um eins erhäht wenn sich ein kreis mit einem rechteck überlappen. das problem dabei ist nun das sobald sich diese überlappen ich innerhalb einer sekunde an die 10 -30 punkte bekomme da ich bei der Kollision pro frame ein Punkt bekomme.
Mein Frage: wie bekomme ich es hin das bei der überlappung immer nur ein Punkt bekomme.

Hier ein teil vom code


```
becherKollision[i] = new Rectangle(cup_PositionX[i], cup_PositionY[i], cup.getWidth() / 2, cup.getHeight() / 2);
            shapeRenderer.rect(cup_PositionX[i], cup_PositionY[i], cup.getWidth() / 2, cup.getHeight() / 2);
            pongCircle.set(Spiel_ballX + Spiel_ball.getWidth() / 8, Spiel_ballY + Spiel_ball.getHeight() / 8, Spiel_ball.getWidth() / 8);
            if(Intersector.overlaps(pongCircle, becherKollision[i]) ){
                   cup_Counter++;

                Gdx.app.log("punkte", String.valueOf(cup_Counter));
            }
```


----------



## httpdigest (22. Jul 2018)

Ganz einfach: Du merkst dir, ob es in dem vorherigen Frame eine Überlappung gab, und falls ja, zählst du die aktuelle Überlappung (falls eine) einfach nicht. Du musst dir also irgendwo den Zustand des letzten Frames bezüglich Überlappung merken.

Also in etwa so:

```
public class SomeGameClass {
  ...
  private boolean lastFrameIntersected;
  ...
  public void checkIntersection() {
    boolean thisFrameIntersected = Intersector.overlaps(...);
    if (thisFrameIntersected && !lastFrameIntersected) {
      cup_Counter++;
      Gdx.app.log("punkte", String.valueOf(cup_Counter));
    }
    lastFrameIntersected = thisFrameIntersected;
  } 
  ...
}
```


----------



## Javaamateur (22. Jul 2018)

Ja, habe auch schon daran gedacht war mir nicht sicher ob sowas funktioniert bzw weiß noch immer nicht wie man das macht. habe aber schon was versucht. werde aber dann noch weiter probieren.

bearbeitet: habe es jetzt geschafft. habe grade erst richtig verstanden wie du das meintest.

Danke für die schnelle und Hilfreiche Antwort


----------

