Box2D中刚体的点击问题

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使用的精灵,若是,往下执行。
本人刚接触这个引擎一个礼拜,有什么别的比较好的方法,望不吝赐教!