مساء الخير ، عزيزي المستخدم habr.com! هذه هي المادة الثالثة حول هذا الموضوع. أنا أعمل طوال اليوم ، لا أستطيع أن أمزق نفسي عن مكتبة Box2D المدهشة.
إذا لم تكن قد قرأت المادتين
الأولى والثانية ، تأكد من النظر ، فسيكون ذلك ممتعًا! أنا أعمل في
الكسوف ، أكتب في جاوة. لماذا اتصلت بمقالتي؟ تابع القراءة - وقريباً سيكون كل شيء واضحًا! المفسد: سنقوم بصنع آلة الحركة الدائمة الخاصة بنا (بما في ذلك السيارة) ، وربما سنقوم بصنع السيارة بنفسها!
الشكل 1. آلة الحركة الدائبة.
لذلك ، اليوم سنحاول الحصول على شيء مثل هذا:
الشكل 2. الجهاز مع المحرك.
نعم ، هذا ليس خطأ مطبعي! اليوم سوف نصنع آلة بمحرك حقيقي ، وسيكون تمييزها عن الجهاز الحقيقي! هذه ليست "العربة" بالنسبة لك من المقال
الأول .
لتوصيل
libGDX ، راجع المقال
الأول .
فيما يلي صورة توضح كيف يبدو التجميع الخاص بي. أضفت حزمة Utils مع فئة الثوابت إلى المجلد Core ، والذي يحتوي على ثابت واحد فقط - عدد البكسل لكل متر. هذا هو أن العالم ليس عملاقا.
الشكل 3. بلدي بناء.
فيما يلي رمز فئة DesktopLauncher من com.mygdx.game.desktop:
الصق هذا الرمز في الفصل ونسيانه.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();
التعليمة البرمجية التالية لفئة MyGdxGame هي من الحزمة com.mygdx.game. كل شيء في تعليقات كود.
نخلق العالم والجهاز. 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 Box2DDebugRenderer b2dr;
الشكل 4. ماذا نحصل عليه عند التجميع؟
نخلق سيارتنا محرك يدور عجلاته. لكنه يعمل إلى الأبد ، لأنه لا توجد خسائر في الطاقة. وبالتالي نحن ننشئ آلة الحركة الدائمة لدينا!
وأنت تتساءل ما هو في نهاية المستوى؟ إرسال لقطات في التعليقات كما تذهب. شكرا لقراءة المقال حتى النهاية! آمل أن تتمكن من إنشاء سيارتك الخاصة في Box2D!
PS أنا أتطلع إلى أسئلتك في التعليقات! تحيا فيزياء الألعاب!