Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用box2d沿斜坡向上移动动态实体_Java_Android_Box2d_Libgdx - Fatal编程技术网

Java 使用box2d沿斜坡向上移动动态实体

Java 使用box2d沿斜坡向上移动动态实体,java,android,box2d,libgdx,Java,Android,Box2d,Libgdx,我是android开发的新手,作为我第一次尝试使用android应用程序的尝试,我正在尝试使用libGDX和box2d制作一个类似于Mario的2D侧滚游戏 我找到了这个教程来帮助我启动并运行:。我遵循了它,并对它做了一些更改,我已经用我自己的一套瓷砖安装并运行了它。我遇到的问题是,当示例中名为jumper的盒子到达倾斜瓷砖的底部时,它就会停止移动。如果您下载第2部分的示例,并修改collisions.txt文件,将第12行更改为0x31,31x0,然后走到第一个坡度,您应该希望看到我的问题,该

我是android开发的新手,作为我第一次尝试使用android应用程序的尝试,我正在尝试使用libGDX和box2d制作一个类似于Mario的2D侧滚游戏

我找到了这个教程来帮助我启动并运行:。我遵循了它,并对它做了一些更改,我已经用我自己的一套瓷砖安装并运行了它。我遇到的问题是,当示例中名为jumper的盒子到达倾斜瓷砖的底部时,它就会停止移动。如果您下载第2部分的示例,并修改collisions.txt文件,将第12行更改为0x31,31x0,然后走到第一个坡度,您应该希望看到我的问题,该示例不会尝试处理倾斜碰撞。我确信我的碰撞边界是正确的,因为我已经打开了调试渲染,并且可以在正确的位置看到它们

根据我在互联网上所做的研究和对代码的玩弄,可能有两种解决方案:

我已尝试将长方体对象的重心更改为“降低”,并将“固定旋转”设置为“假跳线”。sexFixedRotationfalse,以便长方体与坡度成角度,并相对于平面应用线性脉冲。我一直无法让它工作。 我试过检测水平和垂直速度,如果盒子没有移动,但仍在按下输入,则应用不同的线性脉冲。
    if (moveRight && !moveLeft) {

      if(!(Math.abs(jumper.getLinearVelocity().x) > 0.0f) && !(Math.abs(jumper.getLinearVelocity().y) > 0.00f)) {
        jumper.applyLinearImpulse(new Vector2(0.0f, 0.09f), jumper.getWorldCenter());
    } else {
        jumper.applyLinearImpulse(new Vector2(0.05f, 0.0f), jumper.getWorldCenter());
    }
    if (!jumperFacingRight) {
        jumperSprite.flip(true, false);
        jumperFacingRight = true;
    }
}
这确实有效,但速度非常慢,而且令人毛骨悚然,更不用说哈奇了


我确信我遗漏了/没有想到一些东西,任何建议都是非常受欢迎的

这是摩擦问题吗?如果你把你的球员固定装置的摩擦力设为零,你会得到什么?谢谢你的回应。如果我将摩擦力设为零,那么与坡度的相互作用是相同的,只是精灵沿着平面移动的速度比我们想象的要快。我忘了提一下,如果精灵跳到斜坡上,并沿斜坡向下施加一个线性脉冲,那么精灵会像你预期的那样沿着斜坡向下滑动。是否可能你的侧向力太弱了?例如,即使摩擦力为零,如果侧向力与重力的大小完全相同,那么这两个力在45度的斜坡上会完全抵消,这不是问题所在。为了证实这一点,我将摩擦力设为零,重力设为1.0f,并施加了2.0f的线性冲量,它仍然在斜坡底部停止。这可能与没有向上施加力有关吗?奇怪。是否仅当角色接近坡度时,或在坡度上的任何点?我只是想知道他是不是在它的下角被抓住了——你可以通过把倾斜的瓷砖放低一点来检查,以确保角色没有在斜坡的开始处绊倒。