こんにちは親愛なる読者! Javaの
EclipseでのBox2Dの非常に基本的な
最初の記事をすでに書いています。 今日は、ニュートンのゆりかごの例を使用して、この素晴らしい物理ライブラリのオブジェクトの接続を構成する方法を示します。
私たちは何を期待していますか?
図1.良すぎる!
まったくそれとはまったく異なる何か!
libGDXの接続については、
最初の記事を参照してください。
プロジェクトの構成は変更されていません。
図2.プロジェクト。 フォルダーとパッケージ。
ConstantsクラスのUtilsパッケージをCoreフォルダーに追加しました。このフォルダーには、1定数のみ(メートルあたりのピクセル数)が含まれています。 これは、世界が巨大ではないようにするためです。
com.mygdx.game.desktopのDesktopLauncherクラスのコードは次のとおりです。
このコードをクラスに貼り付けて、忘れてください。package com.mygdx.game.desktop; import com.badlogic.gdx.backends.lwjgl.LwjglApplication; import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; import com.mygdx.game.MyGdxGame; public class DesktopLauncher { public static void main(String[] arg) { LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
物理モデルでは、弾性係数が最も重要です。 値が大きいほど、振り子の振動が大きくなります。 Box2Dでは、FixtureDefの復元パラメーターは0から1.0fの値を取ることができます。0は絶対に伸縮性がなく、1.0fは絶対に伸縮性があります。 反発= 0.8fで得たニュートンのゆりかごの最良のモデル:
図3 弾性係数= 0.8f、より明確にするため、時間経過。
実装コード: package com.mygdx.game; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer; import com.badlogic.gdx.physics.box2d.CircleShape; import com.badlogic.gdx.physics.box2d.FixtureDef; import com.badlogic.gdx.physics.box2d.PolygonShape; import com.badlogic.gdx.physics.box2d.World; import com.badlogic.gdx.physics.box2d.joints.RevoluteJointDef; import utils.Constants; public class MyGdxGame extends ApplicationAdapter { private OrthographicCamera camera; private boolean DEBUG = false; private World world; private Body plos; private Body plos2; private Body plos3; private Body plos1; private Body plos4; private Box2DDebugRenderer b2dr; private Body ball; private Body ball1; private Body ball2; private Body ball3; private Body ball4; public void create() { float w = Gdx.graphics.getWidth(); float h = Gdx.graphics.getHeight(); camera = new OrthographicCamera(); camera.setToOrtho(false, w / 2, h / 2); world = new World(new Vector2(0, -9.8f), false); b2dr = new Box2DDebugRenderer();
係数を自分で変更して、異なる結果を得ることができます。 さらに、テクスチャをプリミティブに適用して、よりリアルに仕上げることができます。
次に、弾性係数のさまざまな値のgif画像を示します。
図4. 1fに等しい弾性係数。
図5. 0.5fに等しい弾性係数。
図6. 0.2fに等しい弾性係数。
図7. 0に等しい弾性係数
たくさんのアイデアがあります、私は可能な限り結果を広めようとします! 最後まで読んでいただきありがとうございます。この記事がお役に立てば幸いです。 Box2Dライブラリのおかげで、ゲームの世界に本当のカオスをもたらしましょう!
PSコメントのすべての質問に答えます。