gpt4 book ai didi

Java:帮助确定两个矩形之间的碰撞

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:43 25 4
gpt4 key购买 nike

我正在创建一个游戏,pacman,特别是作为我类(class)作业的一部分,但在使用矩形进行碰撞检测时遇到了问题。

我遇到的问题是,即使在屏幕上可以清楚地看到角色没有碰撞,检查交集实际上总是返回 true。下面的输出解释了我的意思:

Pacman details: x 17.0 y 16.0 Inky details: x 22.0 y 13.0 Collision after calling intersects(): true Pacman details: x 18.0 y 16.0 Inky details: x 23.0 y 13.0 Collision after calling intersects(): true

我的矩形设置如下:

public Rectangle pacmanBounds(){
return new Rectangle(pacRow, pacColumn, 22, 22);
}
public Rectangle ghostBounds(){
return new Rectangle(ghostRow, ghostColumn, 22, 22);
}

为了测试目的,高度和宽度已被硬编码,但这些是实际的图像尺寸。

每次重新绘制 JPanel 时,我都会按如下方式检查碰撞:

public boolean checkCollision(){
Rectangle pacmanBounds = pacman.pacmanBounds();
//currently commented out for testing
/*if(pacmanBounds.intersects(inky.ghostBounds()) || pacmanBounds.intersects(blinky.ghostBounds())
|| pacmanBounds.intersects(pinky.ghostBounds()) || pacmanBounds.intersects(clyde.ghostBounds())){
System.out.println("Oh no!");
return true;
}*/

System.out.println("Pacman details: x " + pacmanBounds.getX() + " y " + pacmanBounds.getY() + " ");
System.out.println("Inky details: x " + inky.ghostBounds().getX() + " y " + inky.ghostBounds().getY());
System.out.println("Collision after calling intersects(): " + pacmanBounds.intersects(inky.ghostBounds()));
return false;
}

此时我几乎没有关于如何解决这个问题的想法,因此非常感谢你们提供的任何建议!

最佳答案

假设getX()getY()返回矩形的左上角坐标点,那么这些将是每次调用的矩形边界:

Pacman details: x 17.0 y 16.0 Inky details: x 22.0 y 13.0 Collision after calling intersects(): true

Pacman 矩形将是其左上角坐标加上每个方向的 22,得到一个右下角为 (39.0, 38.0) 的矩形,如果 Inky 的右上角为 (22.0, 13.0) 且左下角为 (44.0, 35.0),则该矩形肯定与 Inky 相交

这就是我的样子。您的意思是 22.0 是 Pacman 和 Inky 矩形的边界(以像素为单位还是以正方形为单位)?如果这些假设正确,那么 Inky 的左下角 (22.0, 35.0) 实际上完全位于 Pacman 内部,这可能不是您想要的。问题可能是多种原因造成的,如果不了解更多代码并了解矩形的确切含义,很难说出问题所在。 :D

关于Java:帮助确定两个矩形之间的碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5602239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com