levelhelperで使用される「is a bullet」プロパティとは何ですか? また、アングリーバードのようなゲームでは、鳥は春にリロードされます...カウントを維持するにはどうすればよいですか? levelhelper を使用して怒っている鳥のようなゲームを作成している場合、春に弾丸をリロードする方法。
1 に答える
box2d マニュアルhttp://www.box2d.org/manual.htmlから
弾丸
通常、ゲーム シミュレーションでは、一定のフレーム レートで再生される一連の画像が生成されます。これは離散シミュレーションと呼ばれます。離散シミュレーションでは、剛体は 1 つのタイム ステップで大量に移動できます。物理エンジンが大きな動きを考慮していない場合、一部のオブジェクトが互いに誤って通過することがあります。この効果はトンネリングと呼ばれます。
デフォルトでは、Box2D は連続衝突検出 (CCD) を使用して、動的ボディが静的ボディをトンネリングするのを防ぎます。これは、シェイプを古い位置から新しい位置にスイープすることによって行われます。エンジンはスイープ中に新しい衝突を探し、これらの衝突の衝突時間 (TOI) を計算します。ボディは最初の TOI に移動し、残りのタイム ステップで停止します。
通常、動体間ではCCDは使用しません。これは、パフォーマンスを適切に保つために行われます。一部のゲーム シナリオでは、CCD を使用するためにダイナミック ボディが必要です。たとえば、動的なレンガのスタックに高速の弾丸を発射したい場合があります。CCD がないと、弾丸がレンガを貫通する可能性があります。
Box2D 内の高速移動オブジェクトは、弾丸としてラベル付けできます。Bullets は、静的ボディと動的ボディの両方で CCD を実行します。ゲーム デザインに基づいて、どのボディを弾丸にするかを決定する必要があります。ボディを弾丸として扱う必要がある場合は、次の設定を使用します。
bodyDef.bullet = true;
bullet フラグは、ダイナミック ボディにのみ影響します。
Box2D は連続的な衝突を順次実行するため、弾丸は高速で移動するボディを見逃す可能性があります。