移动平台碰撞检测

时间:2015-03-11 12:58:12

标签: libgdx collision-detection

我有一个恒定速度的移动平台,当我的olayer跳过那个平台时,我需要更新我的玩家位置。但我碰撞检测有问题。这是我如何尝试检测我的播放器底部矩形和平台矩形之间的碰撞。

    for(GameObject t2 : list){
                    if(t2 instanceof Platform){

                        platform = (Platform) t2;
                        render.rect(platform.getHitBox().getX(), 
                                    platform.getHitBox().getY(),
                                    platform.getHitBox().getWidth(),
                                    platform.getHitBox().getHeight());

                        platform.update(Gdx.graphics.getDeltaTime(), 0,
                                        player1.getHitBox().getX(), 
                                        Gdx.graphics.getWidth());

                        if(platform.getHitBox().overlaps(player1.getHitBox())
                           ||player1.getHitBox().overlaps(platform.getHitBox())){

                            System.out.println("true");

                            platformPositonX = player1.getHitBox().getX() 
                                              + platform.getUpdateSpeed();

                            player1.action2(1, platformPositonX, 
                                           (platform.getHitBox().y +
                                           platform.getHitBox().height));

                        }else{
                            System.out.println("false");
                        }
                    }
}

这是我的打印屏幕,我的结果打印在concole enter image description here 你可以看到我的碰撞不能正常工作。当我的角色不在平台上时我的结果是正确的我得false  但当我的角色在平台上时,我得到truefalsefalsetrue,......

2 个答案:

答案 0 :(得分:1)

最后我发现了什么是错的。在这一行中,我需要减去一个数字

 player1.action2(1, platformPositonX,(platform.getHitBox().y + platform.getHitBox().height - 5 ));

现在一切正常!

答案 1 :(得分:0)

进入示例代码,只需输入" false" println,如果不重叠,触摸是真的,我不知道是什么"触及"在这种情况下,但是如果你想进入的话,只有当ovelaping是假的,你的伙伴就会证明:

代码中的

表示:

..// other code

    }else if(touched){
            System.out.println("false");
    }
}

为此改变:

..// other code

    }else{
            System.out.println("false");
    }
}

您可能也有兴趣看一下:

Libgdx - Get Intersection Rectangle from Rectangle.overlap(Rectangle)