如何破坏Box2D中的b2Body(cocos2d)?检查了行程距离

时间:2011-07-08 20:18:32

标签: cocos2d-iphone box2d box2d-iphone projectile

我在box2d / cocos2d-for-iphone中有子弹。它们飞得很好......但是我想在它们行进一定距离后摧毁这些子弹。例如,在子弹“飞行”480px后,它应被移除。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

这很简单:world->DestroyBody(body)。 而且,小建议。为了良好的实践和表现,你不应该一遍又一遍地制造子弹。重用它!只是让它们不可见,并将它们重新定位在源的位置。

答案 1 :(得分:1)

要计算距离,在创建子弹存储时它位于某个位置。然后每一步检查:

b2Vec2 diff = bullet->GetPosition() - startPosition;
if (diff.Length() > MaxLen)
{
    world->DestroyBody(bullet);
}

修改

如果你想计算路径长度,那么存储在前一个位置和路径长度的某个地方,即最初为0:

b2Vec2 diff = bullet->GetPosition() - prevPosition;
pathLength += diff.Length();
if (pathLength > MaxLen())
{
    //destroy bullet//world->DestroyBody(bullet);
}