我在box2d / cocos2d-for-iphone中有子弹。它们飞得很好......但是我想在它们行进一定距离后摧毁这些子弹。例如,在子弹“飞行”480px后,它应被移除。
我怎样才能做到这一点?
答案 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);
}