我做了一个简单的游戏,并且有一种简单的方法来检测何时收集了硬币,但是很难精确匹配其位置。
public class Token {
private String name;
int x;
int y;
private BufferedImage image;
public Token (String nameIn, int xIn, int yIn, BufferedImage imageIn)
{
name = nameIn;
x = xIn;
y = yIn;
image = imageIn;
}
public boolean collected(Hero frylark) {
if (frylark.getX() == x && frylark.getY() == y) {
return true;
}
else {
return false;
}
}
}
有什么办法可以让我说10个像素的缓冲区,而不是
完全匹配硬币的位置。
最佳答案
二维字段中两点之间的距离是其相应坐标之间的差的平方之和:
public boolean collected(Hero frylark) {
return Math.sqrt(Math.pow(frylark.getX() - x , 2) +
Math.pow(frylark.getY() - y , 2)
) <= 10.0;
}