0

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

我怎样才能做到这一点?

4

2 回答 2

1

这很简单:world->DestroyBody(body). 还有,小建议。为了良好的实践和表现,您不应该一遍又一遍地创建项目符号。重复使用它!只需使它们不可见并将它们重新定位在源位置即可。

于 2011-07-09T07:38:49.663 回答
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);
}
于 2011-07-09T11:20:56.843 回答