我和朋友一起做了一场小游戏。现在,我有一个相机系统,我基本上只是改变环境对象的x和y值。例如:
public void move(){
if(player.up){
enemyposy += player.speedY;
hostageposy += player.speedY;
grassy += player.speedY;
ammoboxy += player.speedY;
healthkity += player.speedY;
helipady += player.speedY;
bushy += player.speedY;
}
当你按下向上按钮时,这将移动所有这些物体,因此它会产生玩家正在移动的错觉,而不是。现在,我尝试通过这样做来创建一个碰撞系统:
public void checkCollision(){
if(player.getBounds().intersects(enemy.getBounds())){
System.out.println("Colliding with Enemy");
healthdown.start();
}else{
healthdown.stop();
}
但是,当我去敌人并触摸它时,它不会像触摸那样反应,它不会说“与敌人碰撞”,但是我在玩家中。有人可能会告诉我它为什么没有回应,并给我一个如何解决它的解决方案?
getBounds方法:
public Rectangle getBounds(){
return new Rectangle(getX(),getY(), 20, 20);
}
玩家getBounds完全相同。
intersects是一种已经实现的方法。
boolean java.awt.Rectangle.intersects(Rectangle r)
确定此Rectangle和指定的Rectangle是否相交。如果它们的交点是非空的,则两个矩形相交。
参数: r指定的Rectangle 返回: 如果指定的Rectangle和此Rectangle相交,则为true;否则为false。否则就是假的。
答案 0 :(得分:0)
在您显示的代码中,您不更新player.x,因此player.getX不会更改。敌人也是如此:)