JavaFX碰撞检测 - 任何提示?

时间:2018-04-19 01:30:07

标签: java javafx collision-detection

我目前正在为一个学校项目制作一个小游戏,但我遇到了碰撞检测问题。

这是我的时间轴和跳转按钮代码:

Timeline timeline = new Timeline(new KeyFrame(Duration.ZERO,
                    new KeyValue(player.translateYProperty(), ty, 
                    interpolator)),
                    new KeyFrame(Duration.seconds(.5),
                    new KeyValue(player.translateYProperty(), ty-40, 
                    interpolator)));

Timeline eTimeline = new Timeline(new KeyFrame(Duration.ZERO,
                     new KeyValue(enemy.translateXProperty(), ex, 
                     interpolator2)),
                     new KeyFrame(Duration.seconds(3),
                     new KeyValue(enemy.translateXProperty(), ex-40, 
                     interpolator2)));

JumpBtn.setOnAction(new EventHandler<ActionEvent>()
    {
        public void handle(ActionEvent e) {

            timeline.setCycleCount(2);
            timeline.setAutoReverse(true);
            JumpBtn.setDisable(true);
            setScore();
            timeline.setOnFinished(evt -> JumpBtn.setDisable(false));
            timeline.play();
        }
    });

这是我对碰撞检测的尝试:

    double playX = player.getX();
    double enemX = enemy.getX();
    double playY = player.getY();
    double enemY = enemy.getY();
    boolean collisionX = false;
    boolean collisionY = false;

    if (playX == 450 && enemX == 450){
        collisionX = true;
        System.out.println("Collision X Detected");
    }
    if (enemY == 480 && playY == 420){
        collisionY = true;
        System.out.println("Collision Y Detected");
    }

    while (death = false){
        if (collisionX = true){
            if(collisionY = true){
                death = true;
                System.out.println("Player is dead");
            }
        }
    }

我只能假设这不起作用,因为它不是经常寻找X和Y位置,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

我不确定JavaFX是否有

Access-Control-Allow-Origin: {value-of-Origin-request-header}

方法,但如果确实如此,则应使用它来检测两种不同形状之间的碰撞。 请记住,如果构成形状/多边形的一个点至少接触到另一个形状/多边形,则两个形状/多边形会发生碰撞。

[==这包含在括号中,因此其碰撞==]