Java游戏开发 - 精灵碰撞?

时间:2015-06-12 22:45:56

标签: java sprite collision

这是我的第一个问题,如果我违反任何规则或其他原因,请原谅。

我一直在开发一个马里奥游戏,我正在努力绘制精灵。我正试图指出碰撞检测。通过研究,我了解到你可以使用Rectangle类来做到这一点......

 public void checkCollisions() {
    Rectangle mr = mario.getBounds();
    Rectangle gr = goomba.getBounds();
    if(mr.intersects(gr)) {
        System.out.println("Collision detected");
    }
}

@Override
public void actionPerformed(ActionEvent e) {
    updateMario();
    checkCollisions();
    repaint();
}

然而,即使马里奥距离另一个精灵半个屏幕,这也会使碰撞方法失效!

所以整体问题是,当精灵彼此远离时,我如何让系统不发送垃圾邮件?

类: http://pastebin.com/PHWTzSvQ

顺便说一下,我使用了Zetcode游戏资源。

1 个答案:

答案 0 :(得分:1)

我解决了。

我使用的方法将精灵位置转换为字符串,而不是交叉方法:

public String getLocationAsString() {
    return x+" "+y;
}

然后我用了这个

 public void checkCollisions() {
    if(mario.getLocationAsString().equalsIgnoreCase(goomba.getLocationAsString())) {
        System.out.println("Collision");
    }
}

感谢您的帮助! (也适用于第一个问题)