0

私は現在、Android ゲームに取り組んでおり、全体的な動き (ジャンプするだけ) を高速化することで、ゲームプレイに多様性を加えたいと考えていました。box2dの重力が加味した加速感がいいのでそのままにしておきたいです。重力を大きくすると、ジャンプが速くなるはずです。しかし、それぞれの x 速度と y 速度を計算して、ジャンプの高さと距離を維持するにはどうすればよいのでしょうか。このようなものを計算するための 2 つの異なる式を見つけましたが、まだいくつかの問題があります。最初は次のようになります。

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

これをエンティティの Update メソッドに入れます。ここで、distance はエンティティに移動させたい距離です。速度と角度は、極座標の値です。

于 2013-11-11T20:08:33.073 に答える
0

これが役立つかもしれません: http://www.iforce2d.net/b2dtut/projected-trajectory「希望の高さに到達するにはどのくらいの速さで発射する必要がありますか?」というタイトルのセクションを参照してください。

水平移動距離は、速度の水平部分にジャンプにかかる時間を掛けたものです。したがって、重力を増やしてジャンプにかかる時間を半分にすると、ジャンプの横方向の距離を維持するために水平方向の速度を 2 倍にする必要があります。

于 2013-11-11T10:33:54.533 に答える
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 に答える