0

我对java很陌生。我正在努力做到这一点,以便我可以用箭头键控制一个球,然后如果你与另一个球碰撞,它会在控制台中打印一条线,说“你输了”或类似的东西。

我已经完成了移动,但我在如何让两个球相撞方面有点挣扎。到目前为止,我已经尝试过这个(我想我在球周围放了一个矩形,但我真的不知道!):

public void collision() {
    Rectangle rectP = new Rectangle(player.x, player.y, player.WIDTH, player.HEIGHT);       
    Rectangle rectE = new Rectangle(Enemy.ex, Enemy.ey, Enemy.WIDTH, Enemy.HEIGHT);

    if(rectP.intersects(rectE))
    {

    System.out.println("game over");
    }
}

有人可以帮我解释一下我做错了什么。

附言。请不要只给我代码,我确实想尝试学习!!!。

谢谢。

public void actionPerformed(ActionEvent e) {
    repaint();
    x += velx;
    y += vely;
}

public void up() {
    vely = -1.5;
    velx = 0;
}

public void down() {
    vely = 1.5;
    velx = 0;
}

public void left() {
    vely = 0;
    velx = -1.5;
}

public void right() {
    vely = 0;
    velx = 1.5;
}

public void keyPressed(KeyEvent e) {
    int code = e.getKeyCode();
    if (code == KeyEvent.VK_UP) {
        up();
    }
    if (code == KeyEvent.VK_DOWN) {
        down();
    }
    if (code == KeyEvent.VK_LEFT) {
        left();
    }
    if (code == KeyEvent.VK_RIGHT) {
        right();
    }
}
4

2 回答 2

0

如果你有两个球中心的坐标 X 和 Y 并且你知道球的半径 - 这应该是一个简单的任务。

只需计算球中心之间的距离并将其与球半径之和进行比较。

你要求跳过公式,就是这样:)

PS在您的代码中看起来很奇怪的player是小写但Enemy大写..它是一个类还是一个对象?

于 2013-04-17T22:25:57.547 回答
0

好吧,我不认为有什么问题是碰撞检测。我认为错误在于计算机认为对象在其他地方而不是它们实际所在的地方。就像有一次我尝试制作破砖桨时,当程序真的认为桨在对面时,我遇到了碰撞检测问题!你应该做的是你应该把矩形的位置绘制到游戏上。这样,您可以看到计算机认为对象在哪里。也许他们完全不在了?

于 2013-09-24T20:24:14.250 回答