2017-05-01 3 views
0

私は2つのダイナミックボディを持っています。各ステップで私はこの体のconst速度を設定しようとします。Box2d strange applyLinearImpulse

body.applyLinearImpulse(Helper.getVec(config.getLinearVelocity()*body.getMass(), body.getAngle()), body.getPosition()); 

または

body.applyForce(Helper.getVec(config.getLinearVelocity()*body.getMass(), body.getAngle()), body.getPosition()); 

または

第1の本体と第2のボディのための 1.5*Vため
body.setLinearVelocity(Helper.getVec(config.getLinearVelocity(), body.getAngle())); 

config.getLinearVelocity()戻り値V: はこれを行う方法を3バリアント存在します。

私が各ステップでsetLinearVelocityを呼び出すと、身体は通常、それぞれ速度を持って動きます。しかし、私が各ステップで他の関数を呼び出すと、体は同じ速度で移動し、速度はsetLinearVelosityを使用する場合よりも数倍高くなります。 なぜですか?

答えて

0

この関数を呼び出すと、mouvementが複数のステップで分解されるため、applyLinearImpulseを1回だけ呼び出す必要があります。たとえば、プレーヤーをジャンプさせたい場合、applyLinearImpulse()を本体に1回だけ(例えば、画面に触れると)呼び、box2dは速度を増加させます。重力はそれを減少させます。

一方、setLinearVelocityは、現在の世界のステップだけの速度を設定します