这是我的第一个问题,如果我违反任何规则或其他原因,请原谅。
我一直在开发一个马里奥游戏,我正在努力绘制精灵。我正试图指出碰撞检测。通过研究,我了解到你可以使用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游戏资源。
答案 0 :(得分:1)
我解决了。
我使用的方法将精灵位置转换为字符串,而不是交叉方法:
public String getLocationAsString() {
return x+" "+y;
}
然后我用了这个
public void checkCollisions() {
if(mario.getLocationAsString().equalsIgnoreCase(goomba.getLocationAsString())) {
System.out.println("Collision");
}
}
感谢您的帮助! (也适用于第一个问题)