使用Box2D在

时间:2015-06-14 15:40:57

标签: libgdx box2d

我一直在尝试使用box2D在LibGDX中设置环绕,例如我希望我的播放器在退出右侧后显示在屏幕的左侧,但是它在这里不起作用是我的代码:

public void setWraparound(){
    //if player goes out of bounds vertically
    if(body.getPosition().x < 0){
        body.setTransform(new Vector2(4.8f, body.getPosition().y),body.getAngle());
    }else if(body.getPosition().x > 4.8f){
        body.setTransform(new Vector2(0, body.getPosition().y), body.getAngle());
    }

    //if player goes out of bounds Horizontally
    if(body.getPosition().y < 0){
        body.setTransform(new Vector2(body.getPosition().x,8f), body.getAngle());
    }else if(body.getPosition().y > 8f){
        body.setTransform(new Vector2(body.getPosition().x,0), body.getAngle());
    }

}

然后我在我的GameStage类中调用这个方法:

 public GameStage() {
    setUpWorld();
    setupCamera();
    setupTouchControls();
    player.setWraparound();
    renderer = new Box2DDebugRenderer();
}

有人帮助我吗?

1 个答案:

答案 0 :(得分:0)

您调用res.send('<html><body>hello</body></html>'); 方法的地方是错误的。在玩家与屏幕边界发生碰撞后,您需要调用它。我建议你做以下

  1. 为每个屏幕边框创建静态实体(您可以使用EdgeShape)
  2. 在您的box2D世界中添加setWraparound并检查ContactListener方法是否为播放器&amp;墙壁做触摸。
  3. 现在检测到触摸后,请调用您的方法beginContact
  4. 或者,您可以创建与屏幕大小匹配的传感器,并检测播放器是否接触传感器边框。或者您可以检查玩家x / y位置的每一帧,看看它们是否在屏幕之外,但最好使用box2D碰撞检测。