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