2013-03-27 2 views
0

так, у меня есть что-то вроде этого:box2d тело не движется

physicsWorld=new PhysicsWorld(new Vector2(10, 10), false); 
Rectangle test = new Rectangle(100, 100, 50, 50, vbom); 

FixtureDef wallFixtureDef = PhysicsFactory.createFixtureDef(0, 0f, 0.5f); 

Body body = PhysicsFactory.createBoxBody(physicsWorld, test, BodyType.DynamicBody, wallFixtureDef); 
physicsWorld.registerPhysicsConnector(new PhysicsConnector(test, body)); 
body.setLinearVelocity(100, 100); 

registerUpdateHandler(physicsWorld); 

attachChild(test); 

и он не работает, тело не движется. Любые идеи, почему?

GLES 2 AnchorCenter

+0

Вы перешагнули мир? – Axis

+0

Что вы подразумеваете под «stepping the world» если «Я обновляю свою сцену», да, я здесь: registerUpdateHandler (физика мира); –

+0

извините мою ошибку – Axis

ответ

0

вашего регистр physicsworld к игровой сцене. Это работает мое устройство и тело движется.

PhysicsWorld physicsWorld = new PhysicsWorld(new Vector2(10, 10), false); 
    Rectangle test = new Rectangle(100, 100, 50, 50, 
      getVertexBufferObjectManager()); 
    FixtureDef wallFixtureDef = PhysicsFactory 
      .createFixtureDef(0, 0f, 0.5f); 
    Body body = PhysicsFactory.createBoxBody(physicsWorld, test, 
      BodyType.DynamicBody, wallFixtureDef); 
    physicsWorld.registerPhysicsConnector(new PhysicsConnector(test, body)); 
    body.setLinearVelocity(100, 100); 
    yourScene.registerUpdateHandler(physicsWorld); 
    yourScene.attachChild(test); 
0

Согласно моему мнению, вы должны применить к себе два изменения.

  1. Изменение физики мира значение конструктора следующим образом

    mPhysicsWorld = новый PhysicsWorld (новый Vector2 (0, SensorManager.GRAVITY_EARTH), ложь);

  2. Изменение PhysicsConnector по следующему пути

    новый PhysicsConnector (тест, тело, правда, правда);

Я думаю, что второе предложение работает для вас, потому что в вашем коде я вижу, что вы не обновляете позицию, а также поворот для своего объекта.

Смежные вопросы