2017-04-12 6 views
0

私はちょうどbox2dで始まっています。私はロケットを作ろうとしています(今は長方形)、ゲームが始まると垂直になり、矩形の底部はエンジンがある場所であり、矩形が向いている方向にあるからです。 私は、これは、画面の右下が押されたときに実行されます方法であり、このlibgdx方向矩形の力が向いています

body.applyLinearImpulse(getUserData().getBoosterLinearImpulse(), new Vector2(body.getWorldCenter().x, body.getWorldCenter().y - Constants.ROCKET_HEIGHT), true); 

をやってみました。長方形が静止しているときにのみ機能します。 私は明らかに自分が何をしているのか分かりません。 applyLineairForceとapplyForceの違いは何ですか?また、問題がないので、簡単に見つけられないので、どのようにbox2dで作業するのが最善でしょうか?

答えて

0

私はこの権利を理解している場合、applyLinearImpulseとapplyForceの違いを知りたいと思います。インパルスは、通常、ゲームのジャンプに使用される力の1回限りの適用であるが、力は車の速度を上げるためにフレームごとに適用されるものである。私はそれをやろうよ、

 // gets x force based on angle 
     float x = (float)Math.sin(body.getAngle() - Math.PI); // minus PI as objects start off facing right 
     // gets y force based on angle 
     float y = (float)Math.cos(body.getAngle()); 

     //apply force to center (applies force to middle so no rotation) 
     //body.applyForceToCenter(new Vector2(
     //  body.getMass()* (x * 12), 
     //  body.getMass()*(y*12)), true); 

     //NOTE: bodies must be set to .fixedRotation = false in order to rotate; 

     //apply force to a point on body (will create rotational force) 
     body.applyForce(new Vector2(
       body.getMass()* (x * 12),//x force to apply 
       body.getMass()* (y * 12)), //y force to apply 
       // apply force to body at 0.5f(halfway for 1f wide object) x and -5 y 
       body.getWorldPoint(new Vector2(0.5f,-5)),true); 
+0

よし感謝:

、あなたのロケットに力を適用するためには、あなたはこのようなものを使用することができます。別の質問:あなたはどうやってこのことを学びましたか? box2dで作業していますか?なぜなら、libgdx/box2dのドキュメントの理解に問題があるからです。 – DreamsInHD

+0

私は個人的に試行錯誤とiforce2d [link](http://www.iforce2d.net/b2dtut/introduction)のガイドを読んで学びました。最初からゲームには素敵なチュートリアルがあります[リンク](http://www.gamefromscratch.com/post/2014/08/27/LibGDX-Tutorial-13-Physics-with-Box2D-Part-1-A-Basic-Physics -Simulations.aspx) – dfour

+0

ありがとう、私はあまりにもそれをやり始めます。主な質問に答えるには、コードの最後の行を説明できますか?あなたは体の複数の部分に力をかけていますか?ロケットが垂直に立っているときに上昇して、それが「指し示す」方向に動くように、ボトムに力をかけるのはどうでしょうか? – DreamsInHD

関連する問題