当前位置: 首页 > 知识库问答 >
问题:

LibGdx-Box2d平台跳转实现

梁丘威
2023-03-14

我正在使用LibGdx中的Box2D创建一个平台游戏。我有一个算法可以将瓷砖转换成固定装置。我用Contact Listener来判断球员是否在空中,但问题是,因为我使用的是相邻的固定装置,

(P)-->

|瓷砖| |瓷砖| |瓷砖|

联系人侦听器在调用contact begin后调用contact end,当我通过相邻的互动程序并将MOB_AIR值设置为true时,即使我在地面上也无法跳跃。

代码的其他部分(mob和box2d world)工作得很好,因为我可以在新登陆或在瓦片之间跳跃。

如果你以前遇到过同样的问题,有没有一个好的html" target="_blank">方法来实现这种跳跃?

http://i.imgur.com/v8ny3sO.png

http://i.imgur.com/yWcDsZb.png

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

PS:问题也不是由于box 2d多边形-多边形拼接故障,我使用链形的球员和多边形的瓷砖。'

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

共有1个答案

端木狐若
2023-03-14

与其简单地设置开始/结束触点时的状态,不如尝试递增或递减计数器,以跟踪传感器正在触摸的物体数量。

 类似资料:
  • 我想创造一个像飞鸟一样的游戏。我想让玩家在屏幕上不断跳跃。我创造了这个代码,它不像一只扑翼鸟跳 代码: 问题是当用户在屏幕上快速点击时,玩家就像火箭一样被击中。当玩家跌倒时,跳跃更低。我该如何解决这个问题,并获得相同的跳跃强度? 我的解决方案:

  • 我正在使用ContactListener测试box 2D中两个物体之间的碰撞 这是我在世界上使用的所有contactListener类。设置ContactListener(new Box2DWorld(this))以添加它 我的dedub是这样的 beginContact preSolve postSolve。preSolve postSolve beginContact preSolve END

  • 问题内容: 尝试使用Box2D编程游戏时,我遇到了Box2D的问题。我为纹理和精灵的长度填写了像素数,以在其周围创建一个框。一切都在正确的地方,但是由于某种原因,一切进展都很缓慢。通过在互联网上查看,我发现,如果不将像素转换为米,box2d可能会将形状当作非常大的对象来处理。这似乎是一切进展缓慢的逻辑原因。 我在该网站上发现了类似的问题,但答案似乎并没有真正帮助。在大多数情况下,解决方案是找到使用

  • 我正在尝试使用LibGDX来掌握游戏开发的窍门,到目前为止,我已经理解了它的一切,因为它是基本的Java,并且很好地使用了接口和超级类。 我正在努力将图形融入到LibGDX项目中,我正在使用Tiled创建地图,我了解它的工作原理以及如何渲染它们。 我也开始进入Box2D学习物理,我能够包装我的地图(平铺的…)用Box2D。 当我尝试从Spine导入项目时,出现了问题,我访问了以下链接:https:

  • 在我的情况下,矩形接触圆形,但我认为没关系。 起初,我试着用两个Ficture来做同样的身体,但旋转有一个问题:我不能有一个带旋转的Ficture,另一个没有。 我认为,它应该与关节有某种联系,但我不知道我应该使用什么关节。也许还有其他解决方案?

  • 问题内容: 我刚刚开始使用libgdx创建游戏。它是使用scene2d ui的自上而下的2d射击游戏。现在我想,我可以在某些程度上增加黑暗和光明,但是我不想使用box2d重写所有内容。我不需要逼真的阴影,只需某种环境光和围绕我角色的光圈即可,不受周围墙壁和其他障碍物的影响。所以我想知道libgdx中是否有任何照明系统?或者我可以不使用box2d物体/世界而使用box2dlights吗?谢谢 问题答