java-冲突检测不起作用?

java-冲突检测不起作用?,java,collision,Java,Collision,我对java很陌生。我试着用箭头键控制一个球,然后如果你与另一个球碰撞,它会在控制台上打印一行“你输了”之类的话 我已经完成了移动,但是我正在努力让两个球碰撞。到目前为止,我已经试过了(我想我在球周围放了一个长方形,但我真的不知道!) 有人能帮我解释一下我做错了什么吗 另外,请不要只给我代码,我想尝试学习 谢谢 public void actionPerformed(ActionEvent e) { repaint(); x += velx; y += vely; }

我对java很陌生。我试着用箭头键控制一个球,然后如果你与另一个球碰撞,它会在控制台上打印一行“你输了”之类的话

我已经完成了移动,但是我正在努力让两个球碰撞。到目前为止,我已经试过了(我想我在球周围放了一个长方形,但我真的不知道!)

有人能帮我解释一下我做错了什么吗

另外,请不要只给我代码,我想尝试学习

谢谢

public void actionPerformed(ActionEvent e) {
    repaint();
    x += velx;
    y += vely;
}

public void up() {
    vely = -1.5;
    velx = 0;
}

public void down() {
    vely = 1.5;
    velx = 0;
}

public void left() {
    vely = 0;
    velx = -1.5;
}

public void right() {
    vely = 0;
    velx = 1.5;
}

public void keyPressed(KeyEvent e) {
    int code = e.getKeyCode();
    if (code == KeyEvent.VK_UP) {
        up();
    }
    if (code == KeyEvent.VK_DOWN) {
        down();
    }
    if (code == KeyEvent.VK_LEFT) {
        left();
    }
    if (code == KeyEvent.VK_RIGHT) {
        right();
    }
}

若你们有两个球中心的坐标X和Y,你们知道球的半径,这应该是一个简单的任务

只需计算球中心之间的距离,并将其与球半径之和进行比较

您要求跳过公式,仅此而已:)


PS在你的代码中看起来很奇怪的是
player
是小写的,而
敌军
是大写的。。它是一个类还是一个对象?

好吧,我不认为碰撞检测是错的。我认为问题在于计算机认为物体在其他地方,而不是它们实际所在的地方。就像有一次,当我试着做一个碎砖机桨叶时,我在碰撞检测方面遇到了问题,而实际上程序认为桨叶在对面!你应该做的是在游戏中画出矩形的位置。这样,你就可以看到计算机认为物体在哪里。也许它们完全关闭了?

也许应该说,当我运行它并将球移动到彼此上方时,什么都没有发生。您多久运行一次这个
collision()
方法?它是否设置为每隔一秒或几毫秒运行一次计时器?不,我该怎么做?只要在球移动时运行
collision()
。你能演示intersects方法的实现吗?这是一个我命名错误的类,还没有来得及修复。另外,如果你能做到你所说的,为什么很多人说我应该使用矩形?那么你为什么要从课堂上阅读value
敌军.ex
?还是它不动了?还有一个。如果它是一个球-为什么它有宽度和高度?我应该怎么做?ball.radius,我猜:)并创建一个敌人的对象,如果你不知道为什么需要它,不要使用静态的东西(我的意思是技术需要)
public void actionPerformed(ActionEvent e) {
    repaint();
    x += velx;
    y += vely;
}

public void up() {
    vely = -1.5;
    velx = 0;
}

public void down() {
    vely = 1.5;
    velx = 0;
}

public void left() {
    vely = 0;
    velx = -1.5;
}

public void right() {
    vely = 0;
    velx = 1.5;
}

public void keyPressed(KeyEvent e) {
    int code = e.getKeyCode();
    if (code == KeyEvent.VK_UP) {
        up();
    }
    if (code == KeyEvent.VK_DOWN) {
        down();
    }
    if (code == KeyEvent.VK_LEFT) {
        left();
    }
    if (code == KeyEvent.VK_RIGHT) {
        right();
    }
}