我正在尝试绘制体节点类型以及polygonesprite。当我要更新两种类型的更新方法。我遇到了问题。
这是多边形类型:
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();
任何人都可以帮助我吗?
答案 0 :(得分:1)
我有一个捷径方法。
您必须为所有人设置标记。例如。 polygone sprite为100,sprite为200。
可以使用用户数据检查标签。如果标记为100,您将执行polygone精灵更新。如果标签是200,你将进行精灵更新。
我认为它会对你有所帮助。