java - LibGdx Box2d Platformer Jump 实现

标签 java libgdx box2d

我正在 LibGdx 中使用 Box2D 来创建平台游戏。我有一个将图 block 转换为固定装置的算法。我正在使用接触监听器来确定玩家是否在空中,但问题是,因为我使用的是彼此相邻的固定装置,

(P)-->

|平铺| |瓷砖| |平铺|

当我通过相邻的图 block 并将 MOB_AIR 值设置为 true 时,在调用 contact begin 后,contact 监听器会调用 contact end,结果即使我在地面上,我也无法跳跃。

代码的其他部分(mob 和 box2d 世界)工作正常,因为当我新着陆或在图 block 之间时我可以跳跃。

如果你之前遇到过同样的问题,有没有好的方法来实现这个跳转?

/image/OQPd3.png

/image/h33xb.png

抱歉我的英语不好,任何帮助将不胜感激。

PS:问题也不在于 box2d 多边形-多边形碰撞故障,我使用链形作为玩家,使用多边形作为图 block 。 `

        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);
                }
            }
        }`

最佳答案

不要在开始/结束接触时简单地设置状态,而是尝试增加和减少计数器来跟踪传感器接触的物体数量。

关于java - LibGdx Box2d Platformer Jump 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21420161/

相关文章:

Java文本到小程序转换器...有这样的东西吗?

java - JPA双向OneToMany关系-无法删除子项

android - 有什么办法可以忽略 libgdx 图像限制? (图像必须是二的幂)

java - 在 libgdx 游戏中设置延迟

java - 将文件中的每一行设置为 java libgdx 中的 GlyphLayout

java - Libgdx 多点触控不工作

java - 解析数组并提取相同长度的字符串

java - 同一个 tomcat 实例上的多个 Web 应用程序是好是坏?

java - 如何将对象从节点移动到节点? Libgdx Box2d A*寻路

java - Libgdx Box2D - 在 body 上绘制 Sprite - 严重问题