私が知る限り、b2BoundaryListener は以前のバージョンの Box2D の一部であり、Box2D の世界には境界がなくなったため削除されました。
これらはキネマティック ボディも検出するため、動的センサーを使用できます。あなたの世界が重力を使用している場合は、体を修正する必要があります。
重力に対抗する力を適用するか、これらの動的センサー ボディをジョイント (溶接ジョイントなど) によって静的ボディに固定することによって、これを行うことができます。
新しい Box2D Javascript ポートには、重力の影響を受けない動的なボディを作成できる setGravityScale メソッドも含まれています (例: JSBox2D ) 。
しかし、b2AABB クラスを使用する場合は、更新時に手動でこれを行う方がおそらく良い考えであり、非常に簡単であると思います。これにより、境界ボックスが境界の外にある場合にオブジェクトが削除されます。
次のようなことができます (テストされていないコード):
var body = world.GetBodyList();
while (body != null) {
var fixture = body.GetFixtureList();
var bodyIsInBounds = false;
while (fixture != null) {
// bounds AABB are your boundaries (as b2AABB object)
if (fixture.GetAABB().TestOverlap(boundsAABB)) {
bodyIsInBounds = true;
break;
}
fixture = fixture.GetNext();
}
if (!bodyIsInBounds) {
world.DestroyBody(body);
}
body = body.GetNext();
}
b2AABB.Contains も確認する必要がある場合があります。boundsAABB に他の b2AABB オブジェクトが完全に含まれている場合、TestOverlap が true を返すかどうかはわかりません。