iPhone用のCocos2D box2dゲームを書いています。私は 2 つのダイナミック ボディを持っています。外部から力が加えられていることを願っていますが、互いに力を加えず、衝突を検出しません。どうすればこれを達成できますか?
また、衝突後も同じ位置で一緒に動くことを願っています。これどうやってするの?
iPhone用のCocos2D box2dゲームを書いています。私は 2 つのダイナミック ボディを持っています。外部から力が加えられていることを願っていますが、互いに力を加えず、衝突を検出しません。どうすればこれを達成できますか?
また、衝突後も同じ位置で一緒に動くことを願っています。これどうやってするの?
それらは互いに力を加えず、衝突を検出します
衝突フィルタリングを見たいと思うかもしれません。この回答には、ボディの衝突フィルタリング インデックスを動的に変更するコードが少しありますhttps://stackoverflow.com/a/11283206/735204
衝突後、それらは同じ位置で一緒に移動します
おそらくある種のジョイント (例: 溶接ジョイント?)
マニュアルから: http://www.box2d.org/manual.html
ジョイントは、ボディをワールドまたは相互に拘束するために使用されます。ゲームの典型的な例には、ラグドール、ティーター、プーリーなどがあります。ジョイントをさまざまな方法で組み合わせて、興味深いモーションを作成できます。
一部の関節には制限があり、可動範囲を制御できます。一部のジョイントは、指定された力/トルクを超えるまで、指定された速度でジョイントを駆動するために使用できるモーターを備えています。
ジョイント モーターはさまざまな方法で使用できます。実際の位置と目的の位置の差に比例するジョイント速度を指定することで、モーターを使用して位置を制御できます。モーターを使用してジョイントの摩擦をシミュレートすることもできます。ジョイント速度をゼロに設定し、小さいながらも重要な最大モーター力/トルクを提供します。次に、負荷が強くなりすぎるまで、モーターはジョイントを動かさないようにします。
最後の回答については申し訳ありませんが、私がそれを書くことができることを確認しているだけです。
これはどうですか?
bodyDef.isSensor = true;
ContactListener を使用して衝突を検出します。衝突検出のための Box2d
また、box2d フィルターを使用することもできます。例えば:
注意: groupIndex < 0 の場合、同じボディが互いに衝突することはありません。それがあなたが必要とするものです。
b2Filter bodyFilter;
bodyFilter.groupIndex = -1;
bodyFilter.categoryBits = 0x0002;
fixtureDef.filter = bodyFilter;