Java LibGdx-Box2d平台跳转实现
我在LibGdx中使用Box2D创建一个platformer游戏。我有一个算法可以将瓷砖转换为固定装置。我使用Contact Listener来确定玩家是否在空中,但问题是,因为我使用的固定装置彼此相邻Java LibGdx-Box2d平台跳转实现,java,libgdx,box2d,Java,Libgdx,Box2d,我在LibGdx中使用Box2D创建一个platformer游戏。我有一个算法可以将瓷砖转换为固定装置。我使用Contact Listener来确定玩家是否在空中,但问题是,因为我使用的固定装置彼此相邻 (P)--> |瓷砖| |瓷砖| |瓷砖| 联系人侦听器在调用contact begin后调用contact end,当我通过相邻的互动程序并将MOB_AIR值设置为true时,即使我在地面上也无法跳跃 代码的其他部分(mob和box2d-world)工作正常,因为我可以在新登陆时跳转,
(P)-->
|瓷砖| |瓷砖| |瓷砖|
联系人侦听器在调用contact begin后调用contact end,当我通过相邻的互动程序并将MOB_AIR值设置为true时,即使我在地面上也无法跳跃
代码的其他部分(mob和box2d-world)工作正常,因为我可以在新登陆时跳转,或者在瓦片之间跳转
如果您以前遇到过同样的问题,有没有一种好的方法来实现这种跳跃
对不起,我的英语不好,任何帮助将不胜感激
另外,问题并不是因为box2d多边形碰撞的小故障,我使用链形作为播放器,多边形作为瓷砖。
`
当您获得开始/结束触点时,不要简单地设置状态,而是尝试递增或递减计数器,以跟踪传感器正在接触的物体数量
public void beginContact(Contact contact) {
Fixture x1 = contact.getFixtureA();
Fixture x2 = contact.getFixtureB();
if(x1.getUserData()!=null && x2.getUserData()!=null){
if(x1.getUserData().equals("sensor") && x2.getUserData().equals("x")){
mob.setState(Mob.ON_AIR, false);
}
else if(x2.getUserData().equals("sensor") && x1.getUserData().equals("x")){
mob.setState(Mob.ON_AIR, false);
}
}
}
@Override
public void endContact(Contact contact) {
Fixture x1 = contact.getFixtureA();
Fixture x2 = contact.getFixtureB();
if(x1.getUserData()!=null && x2.getUserData()!=null){
if(x1.getUserData().equals("sensor") && x2.getUserData().equals("x")){
mob.setState(Mob.ON_AIR, true);
}
else if(x2.getUserData().equals("sensor") && x1.getUserData().equals("x")){
mob.setState(Mob.ON_AIR, true);
}
}
}`