need some support. I am novice in libgdx game engine. Below is my code
package com.game.box2d.fruitcart; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.audio.Music; import com.badlogic.gdx.audio.Sound; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.BodyDef.BodyType; 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.Shape; import com.badlogic.gdx.physics.box2d.World; public class FruitCartBox2D extends Game{ World world; Box2DDebugRenderer debugRenderer; OrthographicCamera camera; static final float BOX_STEP = 1 / 60f; static final int BOX_VELOCITY_ITERATIONS = 6; static final int BOX_POSITION_ITERATIONS = 2; static final float WORLD_TO_BOX = 0.01f; static final float BOX_WORLD_TO = 100f; Sprite backgroundSprite; Sprite grassSprite; Sprite bucketSprite; Sprite fruitSprite; Music backgroundMusic; Sound dropSound; TextureAtlas atlas; SpriteBatch batch; Body body; @Override public void create() { world = new World(new Vector2(0, -10), true); camera = new OrthographicCamera(); camera.viewportHeight = 480; camera.viewportWidth = 800; camera.position.set(camera.viewportWidth * .5f, camera.viewportHeight * .5f, 0f); camera.update(); atlas = new TextureAtlas(Gdx.files.internal("data/packed.txt")); backgroundSprite = atlas.createSprite("background_original"); grassSprite = atlas.createSprite("grass"); bucketSprite = atlas.createSprite("bucket"); fruitSprite = atlas.createSprite("apple"); batch = new SpriteBatch(); bucketSprite.setBounds(800 / 2 - 80 / 2, 35,80, 80); BodyDef bodyDef = new BodyDef(); bodyDef.type = BodyType.DynamicBody; bodyDef.position.set(camera.viewportWidth / 2, camera.viewportHeight / 2); body = world.createBody(bodyDef); body.setUserData(fruitSprite); FixtureDef fixtureDef = new FixtureDef(); fixtureDef.shape = new PolygonShape(); fixtureDef.density = 1.0f; fixtureDef.friction = 1.0f; fixtureDef.restitution = 1; body.createFixture(fixtureDef); debugRenderer = new Box2DDebugRenderer(); } @Override public void render() { Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); camera.update(); debugRenderer.render(world, camera.combined); batch.setProjectionMatrix(camera.combined); batch.begin(); batch.disableBlending(); backgroundSprite.draw(batch); batch.enableBlending(); grassSprite.draw(batch); bucketSprite.draw(batch); Sprite sprite = (Sprite) body.getUserData(); sprite.setBounds(100, 400, 40, 45); sprite.draw(batch); batch.end(); world.step(BOX_STEP, BOX_VELOCITY_ITERATIONS, BOX_POSITION_ITERATIONS); } } In above code, I have added a background in the form of sprites.It's working fine. After that, there is a fruitSprite, now I want to handle it with box2d so that I can apply gravity on fruitSprite. To achieve this, I've created a dynamic body, added fixture. Now, the problem is here : when I add a polygon shape to fixture and than attached to a body, it gives an unexpected error. It doesn't show any stacktrace. Following is the snapshot of error encountered.

If, I remove polygon shape from fixture, than it gives NullPointerException which shows that shape is mandatory for fixturedef.
I want to add fruitSprite to the box2d body so that I don't have to handle gravity of fruit.
Any help is appreciable, struggling from last 3-4 days.