[英]java - collision detection not working?
我对Java很新。 我正在尝试使其能够使用箭头键控制一个球,然后如果您与另一个球相撞,它将在控制台中打印一行,显示“您输了”或东西。
我已经完成了移动,但是我在如何使两个球发生碰撞方面有些挣扎。 到目前为止,我已经尝试过了(我想我在球周围放了一个矩形,但是我真的不知道!):
public void collision() {
Rectangle rectP = new Rectangle(player.x, player.y, player.WIDTH, player.HEIGHT);
Rectangle rectE = new Rectangle(Enemy.ex, Enemy.ey, Enemy.WIDTH, Enemy.HEIGHT);
if(rectP.intersects(rectE))
{
System.out.println("game over");
}
}
有人可以帮助我,并解释我做错了什么。
ps。 请不要只给我代码,我想尝试学习!!!
谢谢。
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
是小写的,但Enemy
是大写的。是类还是对象?
好吧,我认为冲突检测是不对的。 我认为错误的是计算机认为对象位于实际位置之外的其他地方。 就像有一次我尝试制作打砖块的桨一样,当程序确实认为桨在另一侧时,我在碰撞检测方面遇到了问题! 您应该做的是将矩形的位置绘制到游戏上。 这样,您可以看到计算机认为对象在哪里。 也许他们完全没有了?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.