Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I can't make body (box2d) a sprite (andengine) and at the same time apply MoveModifier to sprite which is body. If i can make just body, it works namely the sprites can collide. If I apply just MoveModifier to sprites, the sprites can move where i want. But I want to make body (they can collide) and apply MoveModifier (they can move where I want) at the same time. How can i do it? This my code just run MoveModifier not as body at the same time.

    circles[i] = new Sprite(startX, startY, textRegCircle[i]);
    body[i] = PhysicsFactory.createCircleBody(physicsWorld, circles[i], BodyType.DynamicBody, FIXTURE_DEF);
    physicsWorld.registerPhysicsConnector(new PhysicsConnector(circles[i], body[i], true, true));
    circles[i].registerEntityModifier(
            (IEntityModifier) new SequenceEntityModifier (
                        new MoveModifier(10.0f, circles[i].getX(),  circles[i].getX(), 
                                circles[i].getY(),CAMERA_HEIGHT+64.0f)));
    scene.getLastChild().attachChild(circles[i]);
    scene.registerUpdateHandler(physicsWorld);
share|improve this question
add comment

2 Answers

I think you cannot apply move modifiers on physics bodies. If you want to move bodies, you have to use other methods like force, impulse or setting velocity.

share|improve this answer
    
Moving the body directly should be possible with a kinetic body. Although kinetic bodies have other downfalls. –  bummzack Jan 21 '13 at 12:56
add comment

It is exactly as Khawar Raza says. When you connect a body with your physics engine and apply Modifier, the modifier will be active but at the same time the physics will override the change in update loop.

It depends on what kind of movement do you need to do, but your options are:

  • Body.setLinearVelocity
  • Body.applyLinearImpulse or Body.applyForce - this is a better way to set the Velocity
  • using MouseJoint.setTarget. This will make the body go to a "target" point.

I recommend checking all of them, but I bet MouseJoint is the one you want. Check out this tutorial: http://www.andengine.org/forums/tutorials/tut-box2d-mousejoint-drag-and-drop-t1156.html

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.