2015-01-12 26 views
0

我正在使用cocos2d-x中的box2d創建類似彈跳球的遊戲。我創建了一個動態的物體對象,我希望它在觸摸開始時移動。我正在使用下面的代碼來移動動態主體,但它不移動。請任何人都可以幫我解決問題。當touchbegin移動box2d中的動態body對象

bullet2=CCSprite::create("block.png"); 
bullet2->setPosition(ccp(2740, 1220)); 
this->addChild(bullet2,0); 

ballBodyDefB.type=b2_dynamicBody; 
ballBodyDefB.position.Set(2740/PTM_RATIO, 1170/PTM_RATIO); 
ballBodyDefB.userData=bullet2; 
ballBodyDefB.gravityScale=0; 
_bullet=_world->CreateBody(&ballBodyDefB); 

b2PolygonShape bulletshape; 
bulletshape.SetAsBox(bullet2->getContentSize().width/PTM_RATIO/2, 
        bullet2->getContentSize().height/PTM_RATIO/2); 

b2FixtureDef b_bullet ; 
b_bullet.shape = &bulletshape; 
b_bullet.density = 1.0f; 
b_bullet.friction = 0.1f; 
b_bullet.restitution = 0.0; 
_bullet->CreateFixture(&b_bullet); 

CCTouchbegan:

b2Vec2 force = b2Vec2(0, -450); 
_block->ApplyLinearImpulse(force, _block->GetPosition()); 

回答

0

嗨移動隨後b2body易精靈。您需要將Sprite附加到b2body.userData並在box2d世界步驟中將您的精靈的位置和旋轉與您的b2body同步。 我不能回答你的直接問題,請發表您的代碼和什麼版本的cocos2d-x的你有更多的細節:

檢查你的代碼包含的代碼約:(依靠的cocos2d-x版本,你使用的是3.2棄用CCSprite,我們用雪碧僅反正)

  • Box2D的世界(你已經有_world)
  • _world一步迭代
  • 同步精靈位置b2body

反正你可以在以下鏈接瞭解詳情: http://www.cocos2d-x.org/wiki/Box2Dhttp://www.cocos2d-x.org/wiki/Getting_Started_with_Cocos2d-x