我正在使用cocos2d-x中的box2d创建一个像弹跳球的游戏。我创建了一个动态的身体对象,我希望它在触摸开始时移动。我使用以下代码移动动态的身体,但它没有移动。请有人帮我解决问题。
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 :(得分:0)
移动跟随b2body的精灵很容易。您需要将Sprite附加到b2body.userData,并在box2d world步骤中将精灵的位置和旋转与b2body同步。 我无法直接回答您的问题,请发布您的代码以及您拥有的cocos2d-x版本以获取更多详细信息:
检查您的代码是否包含以下代码:(依赖于cocos2d-x版本,您使用3.2中不推荐使用的CCSprite,我们只使用Sprite)
无论如何,您可以在以下链接中找到更多详细信息: http://www.cocos2d-x.org/wiki/Box2D和http://www.cocos2d-x.org/wiki/Getting_Started_with_Cocos2d-x