碰撞系统无法正常工作

时间:2011-05-14 18:28:11

标签: java collision

我和朋友一起做了一场小游戏。现在,我有一个相机系统,我基本上只是改变环境对象的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。否则就是假的。

1 个答案:

答案 0 :(得分:0)

在您显示的代码中,您不更新player.x,因此player.getX不会更改。敌人也是如此:)