使用 .intersection 的矩形和圆形碰撞 Java

Rectangle and Circle Collision Java using .intersection

我正在为学校项目制作突破游戏。我 运行 遇到的唯一问题是球和砖块碰撞时的球弹跳。我使用 ball1.getEllipse().intersects(b.getRectangle()) 让我知道它何时发生碰撞并删除砖块。弹跳的机会取决于它碰撞的一侧。这是主要问题。 .intersect 块没有显示砖块被哪一侧击中。我需要这个来知道是否改变 x 或 y 速度。如果有人对如何解决这个问题有任何想法,请留下您的意见(我已经想了 5 个小时的解决方案,我放弃了)

 public void collision(int i) {

    for (Block b : blocks) {
        if (ball1.getEllipse().intersects(b.getRectangle())) {
            if (!b.isDestroyed()) {
                b.destroy();
                blockCount-=1;
                ball1.brickBounce();`public void collision(int i) {

据我从你的问题中了解到,你想知道球击中了矩形的哪一侧。一个简单的方法是获取球的位置和矩形的位置并比较两者。如果球的 x 位置小于矩形 x 位置 - 其宽度的一半(以获得边界的 x 位置),则球击中左侧。然后你可以对右侧做相反的事情。检查它是否击中顶部或底部与 y 位置和矩形的高度相似。请注意,我假设每个形状的 x 和 y 位置是中心,如果不仅要进行微小的调整以获得与中心相同的结果。