触摸开始时在 box2d 中移动动态正文对象



我正在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);

CCTouchbe开始:

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

移动跟随 b2body 的精灵很容易。您需要将精灵附加到 b2body.userData,并在 box2d 世界步骤中将精灵的位置和旋转与 b2body 同步。我无法直接回答您的问题,请发布您的代码以及您拥有的 cocos2d-x 版本以获取更多详细信息:

检查你的代码是否包含关于以下内容的代码:(取决于 cocos2d-x 版本,你使用 CCSprite,它在 3.2 中已弃用,无论如何我们只使用 Sprite)

  • Box2D世界(你已经有_world)
  • _world步骤迭代
  • 将精灵位置与 B2body 同步

无论如何,您可以在以下链接中找到更多详细信息:http://www.cocos2d-x.org/wiki/Box2D 和 http://www.cocos2d-x.org/wiki/Getting_Started_with_Cocos2d-x

最新更新