0

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

g*h*m = v

这可以用来防止高度。

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

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

4

3 回答 3

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

我把它放在实体的更新方法中,其中距离是我希望实体行进的距离。速度和角度是极坐标的值。

于 2013-11-11T20:08:33.073 回答
0

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

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

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

于 2013-11-10T19:53:14.970 回答
0

这可能会有所帮助:http ://www.iforce2d.net/b2dtut/projected-trajectory请参阅标题为“应该以多快的速度发射以达到所需高度?”的部分。

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

于 2013-11-11T10:33:54.533 回答