JavaFX Kollisionserkennung

Cromewell

Top Contributor
Hallo :)
Ich programmiere gerade ein kleines Game.
Aber ich weiß nicht, wie ich die Kollision passend handeln soll.

In meinem loop checkt er jeden Tick, ob es eine Kollision von Player und einem Soliden Objekt gibt:

Java:
for (Shape s: collisionObjects) {

    boolean collision = false;
    Shape intersect = Shape.intersect(s, ply.getPlayer());
    if(intersect.getBoundsInLocal().getWidth() != -1){
        collision = true;
    }
    if(collision){
        ply.setVelY(0);
        if(s.getBoundsInLocal().getMaxY() > ply.getY()+50){
            //stößt von oben auf einen Block -> steht also drauf
            if(ply.isJumping()){
                ply.setJumping(false);
            }
            ply.setY(s.getBoundsInLocal().getMinY()-50-0.1);

        } else if(s.getBoundsInLocal().getMaxY() > ply.getY()){
            ply.setY(s.getBoundsInLocal().getMaxY()+0.0000001);
            //springt von unten an einen Block
        }
    }

}

Ideen ?
 

Cromewell

Top Contributor
Für die Interessierten - es klappt nun ^^
Java:
for (Shape s: collisionObjects) {

    boolean collision = false;
    Shape intersect = Shape.intersect(s, ply.getPlayer());
    if(intersect.getBoundsInLocal().getWidth() >= 0){
        collision = true;
    }
    if(collision){
        ply.setVelY(0);
        if (s.getBoundsInLocal().getMaxY() > ply.getPlayer().getBoundsInLocal().getMinY() && s.getBoundsInLocal().getMaxY() < ply.getPlayer().getBoundsInLocal().getMaxY()) {
            //ply hits block with its top side
            ply.setY(s.getBoundsInLocal().getMaxY() + 0.1);
            System.out.println("t");

        }
        if (s.getBoundsInLocal().getMinY() < ply.getPlayer().getBoundsInLocal().getMaxY() && s.getBoundsInLocal().getMinY() > ply.getPlayer().getBoundsInLocal().getMinY()) {
           //ply hits block with its bottom side
            ply.setY(s.getBoundsInLocal().getMinY()-50.1);
            if(ply.isJumping()){
                ply.setJumping(false);
            }
            System.out.println("b");
        }
        if(!ply.isJumping()) {
            if (s.getBoundsInLocal().getMinY() <= ply.getPlayer().getBoundsInLocal().getMinY()) {
                if (s.getBoundsInLocal().getMaxX() > ply.getPlayer().getBoundsInLocal().getMinX() && s.getBoundsInLocal().getMaxX() < ply.getPlayer().getBoundsInLocal().getMaxX()) {

                    ply.setX(s.getBoundsInLocal().getMaxX() + 0.1);
                    System.out.println("L");

                } else if (s.getBoundsInLocal().getMinX() < ply.getPlayer().getBoundsInLocal().getMaxX() && s.getBoundsInLocal().getMinX() > ply.getPlayer().getBoundsInLocal().getMinX()) {

                    ply.setX(s.getBoundsInLocal().getMinX() - 50.1);
                    System.out.println("R");

                }
            }
        }


    }
}

PS: in den meisten Fällen :D
 

Cromewell

Top Contributor
So, ich habe es jetzt vollständig gelöst xD
Java:
if(collision){
    ply.setVelY(0);
    ply.setVelX(0);
    if(intersect.getBoundsInLocal().getHeight() > intersect.getBoundsInLocal().getWidth()){
        //left/right
        if(ply.getPlayer().getBoundsInLocal().getMinX() < s.getBoundsInLocal().getMaxX() && ply.getPlayer().getBoundsInLocal().getMaxX() > s.getBoundsInLocal().getMaxX()){
            //player hits the left side of a block
            ply.setX(ply.getPlayer().getX()+intersect.getBoundsInLocal().getWidth());
            System.out.println("left");
        }else{
            //player hits the right side of a block
            System.out.println("right");
            ply.setX(ply.getPlayer().getX()-intersect.getBoundsInLocal().getWidth());
        }
    }else if(intersect.getBoundsInLocal().getWidth() > intersect.getBoundsInLocal().getHeight()){
        //top/bottom
        if(ply.getPlayer().getBoundsInLocal().getMinY() < s.getBoundsInLocal().getMinY() && ply.getPlayer().getBoundsInLocal().getMaxY() > s.getBoundsInLocal().getMinY()){
            //player is on the top
            ply.setY(ply.getPlayer().getY()-intersect.getBoundsInLocal().getHeight());
            ply.setJumping(false);
        }else{
            //player hits the bottom of a block
            ply.setY(ply.getPlayer().getY()+intersect.getBoundsInLocal().getHeight());
        }
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J javafx seltsames Verhalten mediaplayer Spiele- und Multimedia-Programmierung 23
L Minecraft [Minecraft] Spigot und JavaFX mit fxml Spiele- und Multimedia-Programmierung 0
K Video aus JavaFX Images generieren Spiele- und Multimedia-Programmierung 2
Sugan GUI verändern mit JavaFX Spiele- und Multimedia-Programmierung 1
L Coordinate Space JavaFX 2d Spiel Spiele- und Multimedia-Programmierung 0
L JavaFX Objekte bewegen Spiele- und Multimedia-Programmierung 3
wolfgang63 Mit JavaFX einfaches Game programmieren Spiele- und Multimedia-Programmierung 5
M JavaFX - MouseDragReleased ruft MouseDragExited auf Spiele- und Multimedia-Programmierung 2
G javafx MediaPlayer sound problem Spiele- und Multimedia-Programmierung 2
L Kollisionserkennung und -behandlung Spiele- und Multimedia-Programmierung 3
N Kollisionserkennung Spiele- und Multimedia-Programmierung 5
BraunBerry Java Game verbesserte Kollisionserkennung Spiele- und Multimedia-Programmierung 18
S Jump 'n' Run-Spiel Kollisionserkennung Spiele- und Multimedia-Programmierung 3
S Kollisionserkennung in Slick2D... Mal wieder Spiele- und Multimedia-Programmierung 4
C Java Kollisionserkennung Spiele- und Multimedia-Programmierung 4
Androbin Pixel-genaue Kollisionserkennung Spiele- und Multimedia-Programmierung 5
Kenan89 Kollisionserkennung - Idee Spiele- und Multimedia-Programmierung 5
T Kollisionserkennung mit AABBs und Spielerobjekt Spiele- und Multimedia-Programmierung 4
P Kollisionserkennung Spiele- und Multimedia-Programmierung 6
R Java3D Kollisionserkennung und Schwerkraft Spiele- und Multimedia-Programmierung 17
Apo Kollisionserkennung bei Jump'n'Run Spiele- und Multimedia-Programmierung 69
B Kollisionserkennung bei gezeichneten Objekten Spiele- und Multimedia-Programmierung 2
M Kollisionserkennung optimieren Spiele- und Multimedia-Programmierung 7
M Kollisionserkennung Spiele- und Multimedia-Programmierung 4
E Probleme mit Kollisionserkennung ! Spiele- und Multimedia-Programmierung 2
P Kollisionserkennung Spiele- und Multimedia-Programmierung 3
R Kollisionserkennung funktioniert nicht Spiele- und Multimedia-Programmierung 3
C Kollisionserkennung Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben