0

我正在尝试构建一个平台游戏。在我的游戏中,随机平台出现并从屏幕右侧移动到左侧。

Using :
b2Vec2 impulse = b2Vec2(-5, 0);
platformBody->SetLinearVelocity(impulse);

但是当我看到我的统计数据时,call / countRef(统计数据的第一行)的数量总是随着新平台从右向左移动而增加。我想知道如何在现有平台移动通过左屏幕(屏幕外)后删除它们。我所有的平台都是 b2_kinematic 体(Box2D)。

编辑答案:

我设法通过以下方式解决了它:

for(std::vector::size_type i = 0; i != m_platforms.size(); i++)

{

  if (m_platforms[i]->GetPosition().x < 0.0f && m_platforms[i]->GetType() == b2_kinematicBody) 

    {

      CCSprite *sprite = (CCSprite *) m_platforms[i]->GetUserData();

      sprite->removeFromParentAndCleanup(true);

      world->DestroyBody(m_platforms[i]);

    }
}       
4

1 回答 1

1

你可以在主循环中检查你的身体是否在屏幕之外,如果是,则销毁它们。就像是。-

if (platformBody->GetPosition().x < SCREEN_X_LIMIT) {
    world->DestroyBody(platformBody);
    // Also, remove attached sprite if exists
}
于 2013-04-14T14:14:12.017 回答