Java – die neusten Beiträge

Wie bekomme ich eine Kollisionsbehandlung hin?

Hi Leute :) Ich bin dabei ein kleines Jump&Run in Java zu programmieren und bin nun schon seit geraumer Zeit an der Kollisionsauflösung hängengeblieben. Die Erkennung von Kollisionen habe ich bereits gelöst. Ich habe nun schon das halbe Internet abgesucht, bin aber nicht schlauer geworden. Könnt ihr mir helfen? Ich habe bisher eine HALBWEGS funktionierende Kollisionserkennung hinbekommen.

Gegeben sind mir: -Position des Spielers(px, py), -Größe des Spielers(playerSize), -Pos. der Hitbox(bx, by), -Seitenlänge der Hitbox(boxSize), -Bewegungsrichtung des Spielers(movex, movey), -Zielposition des Spielers ohne Einbezug der Kollision(destx, desty), -Geschwindigkeit des Spielers(vel) --- alles vom Typ "int"

Das Problem: so wie ich das gelöst habe ist die Auflösung fehlerhaft. Wenn ich geradewegs auf die Hitbox zukomme mit einer Geschwindigkeit von z.B. 5 Pixel pro Frame und ich rage bei der Kollision so in die Hitbox hinein, dass der x-Anteil größer ist als der y-Anteil, dann wird es nach y aufgelöst.

Ich wollte in jedem Schleifendurchlauf die Kollision mit allen überlappenden Tiles so auflösen: Mein bisheriger Code:

if(intersect(...)){ //wenn die Kollision mit der aktuellen Box feststeht
int tilex = bx
int tiley = by
                    
int yover = desty + playerSize - by;        //positiv wenn überlappung
int yunder = by + boxSize - desty;      //positiv wenn überlappung
int xleft = xdest + playerSize - bx;        //positiv wenn überlappung
int xright = bx + boxSize- destx;       //positiv wenn überlappung
                    
boolean left = false, right = false, top = false, bottom = false;  

//Überragt der Spieler die obere, untere, linke oder Rechte Seite der Box 
                    
if(desty < by) top = true;
if(desty + playerSize > by + boxSize) bottom = true;
if(destx < bx) left = true;
if(destx + playerSize > bx + boxSize) right = true;
                    
if(top && !right && !left) desty = by - playerSize;
if(bottom && !right && !left) desty = by + boxSize;
if(left && !top && !bottom) destx = bx - playerSize;
if(right && !top && !bottom) destx = bx + boxSize;
                    
if(top && right){
    if(yover < xright) desty = by - playerSize;
    if(yover > xright) destx = tilex + boxSize;
}
if(top && left){
    if(yover < xleft) desty = by - playerSize;
    if(yover > xleft) destx = bx - playerSize;
}
if(bottom && left){
    if(yunder < xleft) desty = by + boxSize;
    if(yunder > xleft) destx = bx - playerSize;
}
if(bottom && right){
    if(yunder < xright) desty = by + boxSize;
    if(yunder > xright) destx = bx + boxSize;
}
}

Meine Frage ist nun: Wie bekomme ich so eine realistische und genaue Kollisionsbehandlung hin (mit destx und desty als Zielpositionen)? Es geht mir dabei nicht um einwandfreies Java, es zählt nur die Logik dahinter (von mir aus auch Pseudo-code).

Vielen Dank im Voraus :)

programmieren, Java, Spiele programmieren

Warten bis Mädchen schreibt oder soll ich schreiben ?

Also man muss wissen, dass ich mich schon länger für das eine Mädchen interessiere und wir uns nach dem 4 Date geküsst haben. Sie war voll fröhlich und ich denke es hat Ihr gefallen. Naja habe dann nach einem Tag geschrieben das es ein schöner Tag mit Ihr war und nebenbei noch einen kleinen Gag. Das Problem hierbei ist dass sie mir auch deshalb öfteren davor abgesagt hat, da sie nie Zeit hat. Wie ich weiß stimmt das da sie in sehr viele Hobbys und Nebenjobs tätig ist. Mich nervt es einfach dass ich sie immer anschreibe und nach einem Treffen frage. Will einfach mal das sie es tut. Habe Ihr auch nachdem sie schonmal 3xMal abgesagt auch gesagt das ich mich ein bisschen verarscht fühle(vor dem Kuss). Man sollte Frauen ja nicht hinterher rennen und das mache ich auch nicht. Habe auch manchmal einfach 2 Tage nichts geschrieben und gehofft das sie schreibt, was sie aber nicht tat. Gestern habe ich sie wieder angeschrieben und wir haben bisschen geschrieben was sie so macht und ob das ganze nicht stressig für sie ist mit den ganzen Hobbys. Am Ende habe ich Ihr gute Nacht geschrieben aber sie hat nicht drauf geantwortet. Jetzt weiß ich nicht ob ich Sie anschreiben sollte oder nicht? Ich schätze sie eher nicht schüchtern ein aber bin mir da auch nicht so sicher.... Will Ihr ja nicht hinter herrennen und zeigen das sie die Einzige ist... Bringt es was wenn ich nicht schreibe und einfach mal abwarten bis sie schreibt oder soll ich schreiben? Könnte sie natürlich auch zappeln lassen, und wenn sie nach 3 Tagen nicht schreibt, hat sie keine Lust laut Internet 😂 keine Ahnung was stimmt und was net... Bin da irgendwie verzweifelt was ich tun soll und was nicht Hätte gerne ehrliche Antworten von Euch.

Liebe, Mädchen, Java, Beziehung, Kuss, Junge, Verzweiflung, warten

Meistgelesene Beiträge zum Thema Java