增加重力,但保持跳跃的高度和距离

时间:2013-11-10 16:30:57

标签: box2d andengine game-physics

我目前正在开发一款Android游戏,并希望通过加快整体运动(只是跳跃)来增加游戏玩法。我发现box2d的重力增加了很好的加速度,所以想保留它。增加重力应该可以帮助我加快跳跃速度。但是我如何计算相应的x和y速度,以便保持跳跃的高度和距离,所以它保持不变。 我找到了两个不同的公式来计算这样的东西,但仍然存在一些问题。 第一个是:

g*h*m = v

这可以用来预防身高。

v = (sqrt(d) * sqrt(g)) / sqrt(sin(2*angle))

其中d是距离,因此可以使用保留距离。两者的问题在于,因为引力类似于(0, 8),所以x值永远不会有意义。是否有一些简单的方法来结合两种方法,或只是我没有找到的另一个公式?我也是完全新的想法。非常感谢!

3 个答案:

答案 0 :(得分:1)

感谢您的两个答案,但这并不是我想要的。我得到了这样的解决方法:

double velocity = (Math.sqrt(Entity.distance) * Math.sqrt(Math.abs(this.physicsWorld.getGravity().y))) / Math.sqrt(Math.sin(2*Entity.angle));
Entity.MAX_VELOCITY_X = (float) (velocity * Math.cos(Entity.angle));
Entity.MAX_VELOCITY_Y = (float) (velocity * Math.sin(Entity.angle));

我把它放在实体的Update方法中,其中distance是我希望实体移动的距离。速度和角度是极坐标的值。

答案 1 :(得分:0)

在onManageUpdate()方法中,您可以尝试这种方式 -

                vel = playerBody.getLinearVelocity();
                if (vel.y < MAX_VELOCITY) {
                    playerBody.applyLinearImpulse(0, SPEED_JUMP, playerBody.getWorldCenter().x, playerBody.getWorldCenter().y);
                }

并且只更改SPEED_JUMP以加快跳跃速度。

答案 2 :(得分:0)

这可能有所帮助:http://www.iforce2d.net/b2dtut/projected-trajectory请参阅标题为“启动到达所需高度的速度有多快?”一节。

覆盖的水平距离只是速度的水平部分乘以跳跃所需的时间。因此,如果你增加重力以使跳跃花费一半的时间,你需要两倍的水平速度来保持跳跃的侧向距离。