我在 box2d/cocos2d-for-iphone 中有子弹。它们飞得很好……但我想在它们飞行一定距离后摧毁这些子弹。例如,在子弹“飞”480px 后,它应该被移除。
我怎样才能做到这一点?
我在 box2d/cocos2d-for-iphone 中有子弹。它们飞得很好……但我想在它们飞行一定距离后摧毁这些子弹。例如,在子弹“飞”480px 后,它应该被移除。
我怎样才能做到这一点?
这很简单:world->DestroyBody(body)
. 还有,小建议。为了良好的实践和表现,您不应该一遍又一遍地创建项目符号。重复使用它!只需使它们不可见并将它们重新定位在源位置即可。
为了计算距离,在创建子弹库时,它的位置在某处。然后每一步检查:
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);
}