LibGDX Intersector nullpointer?

... komplette Frage anzeigen

3 Antworten

Du musst dir sicher sein dass bei elements an der Stelle [ i ] auch ein Objekt ist, es darf nicht null sein. Versuche vorher mal System.out.println() den Inhalt von Elements auszugeben, um zu schauen ob es null ist oder nicht.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gut4fr5g4
20.11.2016, 17:04

wie gesagt 

"Intersector.overlaps" verursacht die exception, das habe ich schon getestet

LG

0
Kommentar von jaunel
20.11.2016, 17:12

Das ist mir bewusst, aber was wird ausgegeben wenn du elements[ i ] ausgibst? dann weißt du zumindest dass die exception dadurch verursacht wird

0
Kommentar von jaunel
20.11.2016, 17:43

Dann ist playerShape womöglich null

0
Kommentar von jaunel
20.11.2016, 20:07

könntest du evtl den ganzen Code mal schicken? über pastebin etc

0

Es liegt definitiv am angegebenen Rectangle (elements[i]), welches null ist.

Wenn du dir den Sourcecode von "Intersector" anschaust, steht da folgendes:

public static boolean overlaps (Circle c, Rectangle r) {
    float closestX = c.x;
    float closestY = c.y;
    if (c.x < r.x)       // <----- Wirft die Exception

Da "c.x" bereits zwei Zeile vorher aufgerufen wird, ist "c" sicher nicht Null, ansonsten würde die NullpointerException bereits früher geworfen werden.

Somit bleibt nur mehr "r.x" als Fehlerquelle, was bedeutet, dass das Rectangle "r" null ist. Dieses stammt in deinem Beispiel aus dem elements-Array.

Folglich musst du überprüfen wann und warum dieses Rectangle null ist.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gut4fr5g4
21.11.2016, 17:05

Danke 

Für mich macht es wenig Sinn weil ich vorher einen Setter aufgerufen habe der den Array initialisiert

Der Vorredner hat bereits den ganzen code bekommen wäre nett wenn du da mal reinschreiben könntest

0

Also ich habe es jetzt getestet und hinbekommen :D.

Das Problem war, dass das rectangle array in der Player Klasse noch null war, jedoch trotzdem darauf zugegriffen wurde. Ein einfacher Test bevor die Collision testest ist schon ausreichend:

if(elements != null && Intersector.overlaps(playerShape, elements[i])){
//Kollision
}

LG jaunel

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gut4fr5g4
23.11.2016, 18:20

Danke, aber ich habe immernoch die Selbe exception -.-, kannst du nochmal den ganzen code schicken, den du jetzt hast?

0
Kommentar von jaunel
23.11.2016, 22:16

Ja morgen, aber das ist jetzt echt komisch :c weil ich habe es auf dem Handy getestet und es hat funktioniert. Nur die Blöcke wurden nach kurzer Zeit extrem schnell :DD

0
Kommentar von jaunel
25.11.2016, 07:23

Ah sorry habs vergessen aber wie gesagt ich habe eigentlich nichts geändert auser in der Player Klasse nämlich das was ich geschickt habe

0
Kommentar von jaunel
25.11.2016, 15:48

Und du hast das dann auch so ersetzt? Welche Fehlermeldung kommt denn im Moment? Die gleiche wie vorher an der selben Stelle?

0

Was möchtest Du wissen?