Box2D 中怎么在ccTouchesBegan中获取点击的body?
具体的就是,我添加了一个刚体,然后我想在点击这个刚体的时候改变它的形状。
- 本帖最后由 Freedom 于 2012-9-10 11:29 编辑 *
CCNode* parent = getChildByTag(kTagParentNode);
CCArray *array = parent->getChildren();
CCObject *sp2;
CCARRAY_FOREACH(array, sp2){
PhysicsSprite::PhysicsSprite *sp = (PhysicsSprite::PhysicsSprite *)sp2;
CCRect targetRect = CCRectMake(
sp->getPosition().x - (sp->getContentSize().width/2),
sp->getPosition().y - (sp->getContentSize().height/2),
sp->getContentSize().width,
sp->getContentSize().height);
if (CCRect::CCRectContainsPoint(targetRect, location)) {
b2Body *body = sp->getPhysicsBody();
body->ApplyForceToCenter(b2Vec2(300,700));
}
}
其实不用这么麻烦,用他自带的demo,里面设置getPhysicalbody,返回刚体就行了
这个问题本人也已经觉得,不过感觉还有点缺陷,我是通过触摸点,创建一个b2aabb的矩形,查询该范围内有没有刚体存在,若存在,。返回b2Fixture*指针,这是直接使用的demo里面的QueryCallback
类的。
接下来,根据fixture->getBody()获取body,根据body->GetUserDate()获取sprite,然后根据sprite的tag进行判断是否为你之前创建的body使用的精灵,若是,往下执行。
本人刚接触这个引擎一个礼拜,有什么别的比较好的方法,望不吝赐教!