我做了一个简单的游戏,并且有一种简单的方法来检测何时收集了硬币,但是很难精确匹配其位置。

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;
}

10-07 21:05