public class MainActivity extends BaseGameActivity { // private static final int CAMERA_WIDTH = 800; // private static final int CAMERA_HEIGHT = 480; // private static final FixtureDef FIXTURE_DEF = PhysicsFactory.createFixtureDef(1, 0.5f, 0.5f); // , private Camera mCamera; // , private Scene mScene; // , . private PhysicsWorld mPhysicsWorld; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } // public Engine onLoadEngine() { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); // , // . RatioResolutionPolicy // . , return new Engine(new EngineOptions(true, ScreenOrientation.PORTRAIT, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera)); } public void onLoadResources() { } public Scene onLoadScene() { // . , , . mScene = new Scene(1); // , . this.mPhysicsWorld = new PhysicsWorld(new Vector2(0, SensorManager.GRAVITY_EARTH), false); // mScene.registerUpdateHandler(mPhysicsWorld); return mScene; } public void onLoadComplete() { } }
public class Textures { private Texture mTexture; private static TextureRegion mBallTextureRegion; private static TextureRegion mBackgroundTextureRegion; public Textures(final BaseGameActivity activity, final Engine engine) { // - "" // . mTexture = new Texture(1024, 1024, TextureOptions.BILINEAR_PREMULTIPLYALPHA); // - 5121024. mBackgroundTextureRegion = TextureRegionFactory.createFromAsset( mTexture, activity, "gfx/bkg.png", 0, 0); // - // 512,0 - . mBallTextureRegion = TextureRegionFactory.createFromAsset( mTexture, activity, "gfx/ball.png", 512, 0); engine.getTextureManager().loadTexture(mTexture); } public static TextureRegion getBackground() { return mBackgroundTextureRegion; } public static TextureRegion getBallTextureRegion() { return mBallTextureRegion; } }
public void onLoadResources() { // mTextures = new Textures(this, getEngine()); }
public Scene onLoadScene() { // . , , . mScene = new Scene(1); // , . this.mPhysicsWorld = new PhysicsWorld(new Vector2(0, SensorManager.GRAVITY_EARTH), false); // mScene.setBackground(new SpriteBackground(new Sprite(0, 0, Textures.getBackground()))); // - Line line_top = new Line(0, 0, CAMERA_WIDTH, 0, 5.0f * metrics.density); Line line_left = new Line(0, 0, 0, CAMERA_HEIGHT, 5.0f * metrics.density); Line line_right = new Line(CAMERA_WIDTH, 0, CAMERA_WIDTH, CAMERA_HEIGHT, 5.0f * metrics.density); Line line_bottom = new Line(0, CAMERA_HEIGHT, CAMERA_WIDTH, CAMERA_HEIGHT, 5.0f * metrics.density); // Body wall_top = PhysicsFactory.createLineBody(mPhysicsWorld, line_top, FIXTURE_DEF); Body wall_left = PhysicsFactory.createLineBody(mPhysicsWorld, line_left, FIXTURE_DEF); Body wall_right = PhysicsFactory.createLineBody(mPhysicsWorld, line_right, FIXTURE_DEF); Body wall_bottom = PhysicsFactory.createLineBody(mPhysicsWorld, line_bottom, FIXTURE_DEF); // Sprite mSprite = new Sprite(0.0f, 0.0f, 100, 100, Textures.getBallTextureRegion()); // mSprite.setPosition(100, 100); // Body mBody = PhysicsFactory.createCircleBody(mPhysicsWorld, 100, 100, 50, 0, BodyType.DynamicBody, FIXTURE_DEF); // this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(line_top, wall_top, true, true)); this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(line_left, wall_left, true, true)); this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(line_right, wall_right, true, true)); this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(line_bottom, wall_bottom, true, true)); mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(mSprite, mBody, true, true)); // this.mScene.attachChild(mSprite); this.mScene.attachChild(line_top); this.mScene.attachChild(line_left); this.mScene.attachChild(line_right); this.mScene.attachChild(line_bottom); mScene.registerUpdateHandler(mPhysicsWorld); return mScene; }
Source: https://habr.com/ru/post/132810/
All Articles