如何在Java中解决碰撞检测?

时间:2015-08-16 05:33:44

标签: java collision detection

我知道有很多关于Java中的碰撞检测的教程。我搜索,阅读并观看了很多关于它的视频,教程和文章。但我仍然无法解决它。

我目前如何检测我的碰撞是通过块或字符每边的4个矩形框。这在所有游戏对象中都类似:

    public Rectangle getBoundsT(){
    return new Rectangle(x + 1,y,30,10);
}
public Rectangle getBoundsL(){
    return new Rectangle(x,y + 1,10,62);
}
public Rectangle getBoundsB(){
    return new Rectangle(x + 1,y + 54,30,10);
}
public Rectangle getBoundsR(){
    return new Rectangle(x + 22,y + 1,10,62);
}

这可以检测到碰撞:

            if(getBoundsB().intersects(tempObject.getBoundsT())){
            y=tempObject.y - 64;
        }
        if(getBoundsL().intersects(tempObject.getBoundsR())){
            x=tempObject.x + 32;
        }
        if(getBoundsR().intersects(tempObject.getBoundsL())){
            x=tempObject.x -32;
        }
        if(getBoundsT().intersects(tempObject.getBoundsB())){
            y=tempObject.y + 32;
        }

我的播放器对象大小为32x64,我的块为32x32。

现在这个工作,并且它检测到碰撞并停止块,排序。当我完全覆盖一侧时,它将起作用。一旦我移动以便我发生多次碰撞,它将对两者做出反应,导致我的玩家向上传送,或者向侧面传送。我无法发布此图片,因为我需要至少10个声誉。

我不知道如何解决这个问题,我不知道是否必须完全重做碰撞所有内容,因为我做错了。

0 个答案:

没有答案