0

我正在尝试绘制身体节点类型以及多边形精灵。当我要在更新方法上更新这两种类型时。我有问题。

这是多边形类型:

BombBallSprite *bomb = BombBallSprite::spriteWithWorld(world);
bomb->getBody()->SetType(b2_staticBody);
bomb->activateCollisions();

this->addChild(bomb);

这是身体节点类型:

 this->addBodyNode(node, 0);
 node->release();

以上两种类型是在单个场景中绘制的。

当我更新两者时,我遇到了问题:

 void HelloWorld::update(float dt)
 {
     if( gameState_ != kGameStatePaused )
     {
        world_->Step(dt, velocityIterations, positionIterations);
     }

     this->checkAndSliceObjects();

}


void HelloWorld::checkAndSliceObjects()
{
double curTime = getTimeTick();

for (b2Body* b = world_->GetBodyList(); b; b = b->GetNext())
{
    if (b->GetUserData() != NULL)
    {

        PolygonSprite *sprite = (PolygonSprite*)b->GetUserData();
        BodyNode *node = (BodyNode*) b->GetUserData();
        if( node && (node->properties_ & BN_PROPERTY_SPRITE_UPDATED_BY_PHYSICS) ) {

          -------

        }

        if (sprite->getSliceEntered() && curTime > sprite->getSliceEntryTime())
        {
            sprite->setSliceEntered(false);
        }
        else if (sprite->getSliceEntered() && sprite->getSliceExited())
        {
            this->splitPolygonSprite(sprite); 
        }                      
    }

}

}

我不知道如何处理更新方法的以下问题

    PolygonSprite *sprite = (PolygonSprite*)b->GetUserData();
    BodyNode *node = (BodyNode*) b->GetUserData();

任何人都可以帮助我吗?

4

1 回答 1

1

我有一种捷径。

您必须为所有人设置标签。例如多边形精灵为 100,精灵为 200。

可以使用用户数据检查标签。如果标签为 100,您将进行多边形精灵更新。如果标签为 200,您将进行精灵更新。

我想它会对你有所帮助。

于 2013-12-28T05:10:57.407 回答