Я использую AndEngine уже год и чувствую, что пришло время перейти к какой-то физике. Я следовал примеру физики AndEngine, чтобы начать игру «Roll-a-Ball», где мяч прокручивается по экрану с помощью акселерометра, чтобы направлять его в отверстие. Я получил мяч, свернувшийся в норму, но он не может попасть в отверстие. Я Googled и пробовал все, но лучшее, что я могу получить, это мяч сталкивается с отверстием и либо отскакивает от него, либо перекатывается над ним.Andengine Box2d заменит спрайт другим
Вот код.
Это мой мяч.
ball = new AnimatedSprite(pX, pY,this.mBallFaceTextureRegion,this.getVertexBufferObjectManager());
bodyBall = PhysicsFactory.createCircleBody(this.mPhysicsWorld,ball,BodyType.DynamicBody, FIXTURE_DEF);
bodyBall.setUserData("Ball");
ball.animate(200);
this.mScene.attachChild(ball);
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(ball, bodyBall, true, true));
Thia is my hole.
hole = new Sprite(pX, pY, this.hHoleFaceTextureRegion, this.getVertexBufferObjectManager());
bodyHole = PhysicsFactory.createCircleBody(this.mPhysicsWorld, hole, BodyType.StaticBody, FIXTURE_DEF);
bodyHole.setUserData("Hole"); // ID for hole
this.mScene.attachChild(hole);
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(hole, bodyHole, false, false));
Это мой ContactListener внутри сцены onCreateScene() с некоторыми из кода, который я пробовал.
this.mPhysicsWorld.setContactListener(new ContactListener() {
@Override
public void beginContact(final Contact pContact) {
final Body BodyA = pContact.getFixtureA().getBody();
final Body BodyB = pContact.getFixtureB().getBody();
if(BodyA.getUserData() == "Ball" && BodyB.getUserData() == "Hole"){
ball.setPosition(hole);
// BodyA.setType(BodyType.StaticBody); // bodyBall
//mPhysicsWorld.destroyBody(BodyB); // bodyHole
}else if(BodyA.getUserData() == "Hole" && BodyB.getUserData() == "Ball"){
ball.setPosition(hole);
// BodyB.setType(BodyType.StaticBody); // bodyBall
// hole.dispose(); // bodyHole
}
}
Может кто-то пожалуйста, объясните, как поменять отверстие для шарика или каким-либо другим способом, чтобы симулировать мяч сбросив в отверстие. СООБЩЕНИЕ