Cocos2d x 触摸开始时在box2d中移动动态实体对象

Cocos2d x 触摸开始时在box2d中移动动态实体对象,cocos2d-x,box2d,game-physics,Cocos2d X,Box2d,Game Physics,我正在使用cocos2d-x中的box2d创建一个类似弹跳球的游戏。我创建了一个动态身体对象,希望它在触摸开始时移动。我使用以下代码移动动态实体,但它不移动。请任何人都能帮我解决这个问题 bullet2=CCSprite::create("block.png"); bullet2->setPosition(ccp(2740, 1220)); this->addChild(bullet2,0); ballBodyDefB.type=b2_dynamicBody; ballBodyDe

我正在使用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);
会议开始:

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

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

检查您的代码是否包含以下代码:依赖cocos2d-x版本,您使用的是3.2中不推荐使用的CCSprite,我们仍然只使用Sprite

box2d世界您已经拥有了 _世界步迭代 将精灵位置与身体同步 无论如何,您可以在以下链接中找到更多详细信息: 及