2016-03-31 6 views
1

Mit LibGDX habe ich ein Circle-Objekt, das mit einem Rectangle-Objekt kollidiert. Ich erkennen, diese Kollision der Intersector-Klasse mit Libgdx enthalten verwenden, wie so:Entscheiden, ob sich ein Kreis in der oberen Hälfte oder in der unteren Hälfte mit einem Rechteck überschneidet LibGDX

if(Intersector.overlaps(circle, rectangle)){ 
     do something 
    } 

Diese Erkennung funktioniert gut, aber ich frage mich, ob es ein Weg, um zu erkennen, ob der Kreis mit der oberen Hälfte des Rechtecks ​​kollidiert ist oder die untere Hälfte des Rechtecks ​​und je nachdem was, tut etwas entsprechend.

Also vielleicht so etwas wie

if(Intersector.overlaps(circle, rectangle.getHeight() - rectangle.getHeight()/2)){ 
    do something 
} 

Aber leider würde, dass ein Schwimmer zurückkehren, die der Schnitt Klasse nicht akzeptiert.

Irgendwelche Ideen auf, wie man das erreicht, würde sehr geschätzt werden.

Antwort

3

Halten Sie ein wieder verwendbares zusätzliches Rechteck Beispiel:

Privat final Rectangle tmp = new Rectangle();

Wenn Ihr Kreis Rechteck A schneidet, interessiert Sie, dann können Sie das temporäre Rechteck als obere Hälfte von Rechteck A festlegen und das für eine Kollision prüfen. Das Ergebnis sagt Ihnen, ob oben oder unten die Kollision stattgefunden hat. (Aber die Oberseite würde auch eine Kollision registrieren, wenn der Kreis sowohl die obere als auch die untere Hälfte schneidet, also behalte das im Hinterkopf.)

+0

Arbeitete wie ein Charme. Vielen Dank. – guarrana

Verwandte Themen