Kollision

.basti

Aktives Mitglied
Hey,
in meinem Spiel möchte ich jetzt eine Plattform einbauen auf die der Spieler springen kann. Die Kollision frage ich mit zwei Rectangle ab (eins für den Spieler, eins für die Plattform). Das wird dann aber immer ausgelöst wenn der Spieler die Plattform berührt, ich möchte allerdings dass man unter der Plattform durchspringen kann und nur auf ihr stehen bleibt wenn die "Füße" vom Spieler auf der Plattform stehen.
Hier noch die Methode mit der ich die Kollision abfrage:
Java:
public boolean kollision(Spielfiguren p) {
        return getCollisionBox().intersects(p.getCollisionBox());
    }
getCollisionBox() ist der Name meines Rectangle.
Die größe des jeweiligen Rectangle setze ich in einer Subklasse.
Meine Frage ist jetzt wie ich das mache, dass der Spieler durchspringen kann und auf ihr stehen bleibt.
 
G

Gelöschtes Mitglied 65838

Gast
was nimmst du überhaupt her ? pures javafx ? fxgl?

die einfachere art und weise wäre es den mittelpunkt des rechtecks zu bestimmen -> falls der mittelpunkt unter dem rechteck ist dann kannst du durchgehen
 

.basti

Aktives Mitglied
Ich versteh nicht so ganz was du meinst. Vielleicht muss Ichs nochmal genauer erklären. Ich zeichne auf mein JPanel ein Rechteck und einen Spieler. Der Spieler kann mit Leertaste Springen. Jetzt möchte ich erreichen, dass er auf mein Rechteck springen kann. Mit der oben beschriebenen Methode klappt es, allerdings wird das immer ausgeführt wenn ich das Rechteck berühre und nicht nur wenn ich oben drauf stehe.
Java:
if(pf.kollision(spieler)) {
            spieler.setPosition(spieler.getX(), pf.getY()-spieler.getImage().getHeight());
        }
pf ist mein rechteck. Bei setPosition wird hier einfach der x wert beibehalten, da der sich ja nicht ändern soll, der y wert setzt sich aus dem y wert von pf zusammen und dem der Höhe des Spielers (Spieler ist ein BufferedImage). Die Höhe muss ich abziehen da bei Bildern immer die obere Kante genannt wird, ich ja aber die untere brauche.
Wie gesagt wenn ich meine if Anweisung so stehen lasse das wird mein Spieler immer auf die jeweilige Position gesetzt, egal ob ich das Rechteck unten, oben, links oder recht berühre. Mein Ziel ist es aber dass diese Position nur gesetzt wird wenn ich auf der oberen Kante des Rechtecks stehe, also meine untere Kante des Bildes auf der Höhe ist.
Ich hatte auch folgenden anderen Ansatz welche aber nicht funktioniert hat:
Java:
if(spieler.yUnten()==pf.getY()) {
            spieler.setPosition(spieler.getX(), pf.getY()-spieler.getImage().getHeight());
        }
yUnten() beschreibt einfach den y wert der unteren Kante vom Spieler. Wenn ich die if Anweisung so stehen lassen Passiert gar nichts.
 
G

Gelöschtes Mitglied 65838

Gast
du kannst halt entscheiden in welcher position sich der spieler bezüglich des rechteckes befindet

wenn du dir deine situation als koordinaten system vorstellst und P ( 0 , 0 ) das zentrum deines rechteckes ist ( das musst du noch relativieren )

nur wenn der vector P ( -/+ X und + Y ) ist relativ zum rechteck dann bist du überhalb => dann musst du drauf springen


ansonsten nicht
dh dein rechtecks zentrum ist bei

P ( 0 , 50 )
wann bist du dann drüber ?
bei allem was
P ( 0 , 50 + charaktermittelpunkt ) ist => die "relativierung" musst du noch einbauen
gibt bestimmt was einfacheres aber so hast du halt mal in vectoren mathematik gleich mit rein geschaut
 

.basti

Aktives Mitglied
Danke für deine Hilfe allerdings hab ich jetzt einen anderen Weg gefunden. Und zwar prüfe ich ob er hoch oder runter geht. Und nur wenn er runter geht kann er auch drauf stehen bleiben :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Kollision funktioniert nicht richtig bei zu schneller Geschwindigkeit des Spielers Spiele- und Multimedia-Programmierung 0
N Kollision von zwei ImageIcons Spiele- und Multimedia-Programmierung 8
D Kollision funktioniert unten aber nicht oben Spiele- und Multimedia-Programmierung 4
J Kollision (libgdx) Spiele- und Multimedia-Programmierung 2
S Kollision Spiele- und Multimedia-Programmierung 2
J Kollision genau erkennen mit intersects Spiele- und Multimedia-Programmierung 27
K a* kollision der einheiten Spiele- und Multimedia-Programmierung 3
S Probleme bei Breakout - Brick kollision Spiele- und Multimedia-Programmierung 2
F Rechteck Kollision Spiele- und Multimedia-Programmierung 10
H 2- D Kollision Spiele- und Multimedia-Programmierung 14
C Zeldaklon Problem mit Wand-Kollision Spiele- und Multimedia-Programmierung 8
O Kollision Polygon und Rechteck Spiele- und Multimedia-Programmierung 2
S Pacman Kollision von Münzen und Mauern Spiele- und Multimedia-Programmierung 11
P Gridpane Kollision Spiele- und Multimedia-Programmierung 3
Androbin Kollision zwischen Raster und Nicht-Raster Spiele- und Multimedia-Programmierung 2
L Kollision soll nur an oberer Seite (Breite) möglich sein Spiele- und Multimedia-Programmierung 6
Hercules Kisten Kollision Spiele- und Multimedia-Programmierung 2
S 3D-Kollision mit zwei ArrayLists Spiele- und Multimedia-Programmierung 7
T Pixelgenaue Kollision Spiele- und Multimedia-Programmierung 5
A LWJGL 3D Objekte Kollision Spiele- und Multimedia-Programmierung 3
S Kollision tile-based 2D Plattformer Spiele- und Multimedia-Programmierung 2
D Greenfoot Kollision Spiele- und Multimedia-Programmierung 5
D Kollision verhindern Spiele- und Multimedia-Programmierung 2
R Frage zur Kollision Spiele- und Multimedia-Programmierung 5
Maxim6394 [Java3D] Probleme bei Kollision Spiele- und Multimedia-Programmierung 7
Kr0e Kollision zweier Kugeln... Wo ist Newton ?? Spiele- und Multimedia-Programmierung 9
C Kollision zwischen 2 Kreisen Spiele- und Multimedia-Programmierung 3
Helgon Kollision von jeder Seite des Blocks Spiele- und Multimedia-Programmierung 3
Fab1 Kollision die 100ste Spiele- und Multimedia-Programmierung 5
D Jump'n'run Kollision bei Blöcken Spiele- und Multimedia-Programmierung 10
P PingPong Spiel - Kollision Spiele- und Multimedia-Programmierung 2
C Bitmaske und Kollision Spiele- und Multimedia-Programmierung 2
J Spielprogrammierung mit bewegung und kollision Spiele- und Multimedia-Programmierung 24
S Kollision Kreis Rechteck Spiele- und Multimedia-Programmierung 8
aze Java3D: Gegenstände aufeinander zubewegen ohne Kollision Spiele- und Multimedia-Programmierung 4
baddestpoet pixelgenaue Kollision Spiele- und Multimedia-Programmierung 4
S Kollision in 2D Spiele- und Multimedia-Programmierung 12
B Gedrehte Rechtecke Kollision Spiele- und Multimedia-Programmierung 4
J Kollision mit Block (Wand) Spiele- und Multimedia-Programmierung 11
C Kollision in Java3D Spiele- und Multimedia-Programmierung 4
J Kollision von Objekten Spiele- und Multimedia-Programmierung 7
M Asteroids Clone: Kollision zwischen Schuss und Feind Spiele- und Multimedia-Programmierung 13
F Bewegung/Kollision von Objekten auf Tastendruck Spiele- und Multimedia-Programmierung 6
Z Kollision Spiele- und Multimedia-Programmierung 3
F Kollision für Arkanoid Spiele- und Multimedia-Programmierung 2
N Kollision abfragen Spiele- und Multimedia-Programmierung 3
K Sprites / Kollision Spiele- und Multimedia-Programmierung 3
S Jump'n'Run: Probleme mit Kollision Spiele- und Multimedia-Programmierung 13

Ähnliche Java Themen


Oben