8

トップダウン ゲームに Box2d を使用しています。「地面」は一連のタイルであり、各タイルはセンサー形状を持つ静的な物体です。オブジェクトが実際には地面と「衝突」していなくても、摩擦を有効にすることはできますか?

Box2d でこれができない場合は、現在オブジェクトを動かしている力を検出し、それに反対の力を適用することで、独自の実装を試みることを検討しましたが、その力を検出する方法がよくわかりません。

4

3 に答える 3

7

これを行う別の方法はlinearDamping、あなたの体に設定することです。オブジェクトが置かれているタイルに応じて、これを異なる方法で設定できます。

于 2010-04-06T15:35:42.477 に答える
1

摩擦は、他の力に関係なく、物体の速度に対して向けられます。

線形ダンピングの設定が十分でない場合、または b2Body のプロパティに依存することが不適切な場合は、非線形摩擦力を簡単に計算して、フレームごとに ApplyLinearImpulse() または ApplyLinearForce() を呼び出すことができます。

  • b2Body.GetLinearVelocity() で速度をクエリし、必要に応じて結果を (非線形に) スケーリングして力を取得し、両方のコンポーネントの符号を反転します。

  • 本体を停止することに決めた場合 (固まるほど遅い場合)、SetLinearVelocity() は計算を行わずにそのトリックを実行します。

于 2010-05-14T15:22:18.710 に答える
-1

ApplyImpulse()代わりにApplyForce()はるかにうまく機能します。

于 2010-04-05T01:41:49.470 に答える