我正在开发一款游戏,其中您是一个简单的圆圈,可以发射子弹及其多人游戏等等。好吧,我试图让边界有点像你必须经历的迷宫类型的东西我已经尝试过这样的碰撞检测:
public void checkCollisions(){
Rectangle r1 = bo.getBounds();
Rectangle d = p.getBounds();
if (d.intersects(r1))
border = true;
}
基本上,如果border = true,那么我会阻止角色移动。当我这样做时,我有两个问题,
- 他没有停下来,只是走得很慢。
- 即使在边境之外,他也处于非常缓慢的状态。
我使用这样的边框:
boolean border = false;
然后在我的绘画方法中我声明:
if (border)
p.dx = 0;
p.dy = 0;
p 代表 Guy 类:P 更多的 dx 和 dy:
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_A)
dx = -2;
if (key == KeyEvent.VK_D)
dx = 2;
if (key == KeyEvent.VK_W)
dy = -2;
if (key == KeyEvent.VK_S)
dy = 2;
而对于 keyReleased 我只是将 dx 和 dy 的值更改为 0 也用于这家伙如何移动:
public void move() {
x = x + dx;
y = y + dy;
}
请帮我弄清楚为什么这不起作用。