我一直在尝试使用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();
}
有人帮助我吗?
答案 0 :(得分:0)
您调用res.send('<html><body>hello</body></html>');
方法的地方是错误的。在玩家与屏幕边界发生碰撞后,您需要调用它。我建议你做以下
setWraparound
并检查ContactListener
方法是否为播放器&amp;墙壁做触摸。beginContact
或者,您可以创建与屏幕大小匹配的传感器,并检测播放器是否接触传感器边框。或者您可以检查玩家x / y位置的每一帧,看看它们是否在屏幕之外,但最好使用box2D碰撞检测。