box2d/cocos2d-for-iphone に箇条書きがあります。順調に飛んでいますが……一定距離を飛んだ弾丸を破壊したいのです。たとえば、弾丸が 480 ピクセル「飛んだ」後は削除する必要があります。
どうすればこれを達成できますか?
box2d/cocos2d-for-iphone に箇条書きがあります。順調に飛んでいますが……一定距離を飛んだ弾丸を破壊したいのです。たとえば、弾丸が 480 ピクセル「飛んだ」後は削除する必要があります。
どうすればこれを達成できますか?
距離を数えるために、弾丸店を作成するとき、それはどこかに位置します。次に、すべてのステップをチェックします。
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);
}
それは非常に簡単です: world->DestroyBody(body)
. と、ちょっとしたアドバイス。優れたプラクティスとパフォーマンスのために、弾丸を何度も作成しないでください。再利用してください!それらを非表示にして、ソースの位置に再配置するだけです。