Hey, ich hab ein kleines Problemen. Ausprobiert hab ich schon alles was mir in den Sinn kommt.
Ich wollt ne Kollision von nem Block basteln und ich wollt eben, dass die Kollision tatsächlich von jeder Seite korrekt ist, also egal von wo man kommt.
Von der Seite gehts | von oben/unten kommts eben zu diesem "durchschieben"
eine meiner wohl "saubersten" Lösungen war so was in etwa
Das Problem ist eben, das es immer nur von 2 Seiten lösen kann.
so müsst ich
machen um zu runden, damit der "Wiedereinstiegspunkt" nicht wieder in der Wand hängt.
Wenn man dann von Rechts kommt, müsste ich das gleiche machen aber nur aufrunden (und abfragen ob
ist und dann z.B.
aber das Problem ist dann, dass wen ich das gleiche auch für die Vertikale Achse mache es zu dem Problem kommt, das man auf dem Bild sieht (es schiebt sich zwar an die richtige Position, aber schräg durch den Block hindurch)
Ist grad ein wenig kompliziert das Problem zu erklären, aber ich hoffe das ihr versteht.
Habt ihr vllt nen Ansatz wie man sowas normalerweise löst, weil meine Idee erscheint mir nicht sehr intelligent -.-
Grüße
Ich wollt ne Kollision von nem Block basteln und ich wollt eben, dass die Kollision tatsächlich von jeder Seite korrekt ist, also egal von wo man kommt.
Von der Seite gehts | von oben/unten kommts eben zu diesem "durchschieben"
eine meiner wohl "saubersten" Lösungen war so was in etwa
Java:
if(this.intersects(s)){
if(s instanceof Wall){
System.out.println("Wall");
this.x = lastX;
return true;
}
}else{
lastX = this.x; // ansatz
}
Das Problem ist eben, das es immer nur von 2 Seiten lösen kann.
so müsst ich
Code:
lastX = (int) this.x
Wenn man dann von Rechts kommt, müsste ich das gleiche machen aber nur aufrunden (und abfragen ob
Code:
s.x+s.width < this.x
Code:
lastX = (int) this.x +1
Ist grad ein wenig kompliziert das Problem zu erklären, aber ich hoffe das ihr versteht.
Habt ihr vllt nen Ansatz wie man sowas normalerweise löst, weil meine Idee erscheint mir nicht sehr intelligent -.-
Grüße
Zuletzt bearbeitet: