0

box2d/cocos2d-for-iphone に箇条書きがあります。順調に飛んでいますが……一定距離を飛んだ弾丸を破壊したいのです。たとえば、弾丸が 480 ピクセル「飛んだ」後は削除する必要があります。

どうすればこれを達成できますか?

4

2 に答える 2

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 に答える
1

それは非常に簡単です: world->DestroyBody(body). と、ちょっとしたアドバイス。優れたプラクティスとパフォーマンスのために、弾丸を何度も作成しないでください。再利用してください!それらを非表示にして、ソースの位置に再配置するだけです。

于 2011-07-09T07:38:49.663 に答える