I am developing an Android game using the libgdx box2d library in Eclipse. In the game, there's a ball that falls after touching the start button. But I get a nullpointerexception when the ball contacts the dynamic body.
On contact I want to applyLinearForce to that dynamic body. But I keep getting nullpointerexception on contact of the ball and dynamic body.
ContactHandler class:
public class ContactHandler implements ContactListener {
InputHandler input;
@Override
public void beginContact(Contact contact) {
if(contact.getFixtureA().getBody().getUserData() == "do1" && contact.getFixtureB().getBody().getUserData() == "ball"){
System.out.println("beginContact");
input = new InputHandler();
input.getBody1().applyLinearImpulse(10, 0, 0, 0, true);
}
}
InputHandler class:
public class InputHandler implements InputProcessor {
private OrthographicCamera camera;
private Ball ball;
private DragObject dragObject;
private boolean start = false;
private Vector3 touch = new Vector3();
private Vector3 dragTo = new Vector3();
public InputHandler(){
}
public InputHandler(OrthographicCamera camera, Ball ball,
DragObject dragObject) {
this.camera = camera;
this.ball = ball;
this.dragObject = dragObject;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
if (!start) {
for (Body body : dragObject.getBody()) {
if (touch.x > body.getPosition().x - dragObject.getWidth() - 1
&& touch.x < body.getPosition().x
+ dragObject.getWidth() + 1) {
if (touch.y > body.getPosition().y - dragObject.getHeight()
- 1
&& touch.y < body.getPosition().y
+ dragObject.getHeight() + 1) {
dragTo.set(screenX, screenY, 0);
camera.unproject(dragTo);
body.setTransform(dragTo.x, dragTo.y, 0);
touch.set(screenX, screenY, 0);
camera.unproject(touch);
}
}
}
}
return false;
}
public Body getBody1(){
return dragObject.getBody().get(0);
}
DragObject class:
public static Array<Body> bodies = new Array<Body>();
public static int count = 0;
public DragObject(){
}
public DragObject(World world, float x, float y, float width, float height) {
this.world = world;
this.width = width;
this.height = height;
initialize();
body1 = world.createBody(bodyDef1);
body1.createFixture(fixtureDef);
body1.setUserData("do1");
bodies.add(body1);
}
public Array<Body> getBody() {
return bodies;
}
0 comments:
Post a Comment