問題タブ [box2dweb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
box2dweb - box2dweb に境界リスナーを実装する
私はbox2dに比較的慣れていないので、box2dwebバージョンを使用しています。キネマティック ボディがステージの境界から出たことを検出できるようにしたいと考えています。Box2D.Dynamics.b2BoundaryListener は明らかな答えですが、box2dweb ビルドではサポートされていないようです。
update() を呼び出すたびに各ボディの座標をプリミティブにチェックするのではなく、リスナーを作成する効率的な方法はありますか? 静的な物体をセンサーとして使用しようとしましたが、それらは運動学的な物体を検出しません。
javascript - 万有引力をシミュレートする box2dweb のこのコードはどのように機能し、なぜ if ステートメントを使用するのですか?
このコードは、box2dweb で万有引力をシミュレートするために使用されます。万有引力を計算する方法が 2 つあるのはなぜですか? if ステートメントは何に使用されますか? インターネットinvSqr: Boolean; /// If true, gravity is proportional to r^-2, otherwise r^-1
でこれを見たことがありますが、この invsqr の意味がわかりません。
javascript - Box2d のボディが不安定で、静止しない
ゲーム プロジェクトの PoC として box2d を試してみましたが、ワールドとボディを作成し、デフォルトの DebugDraw を配置することができました。反発力、密度、摩擦で遊んでいますが、望ましい動作を得ることができず、ボディが不安定で、ちらつき/跳ね返りが非常に高速です。
ここで実行中のコードを参照してください: http://jsbin.com/qoceranu/1/edit
私は次のことを試しました:
- 反発値を 0.0 に設定しても、正しい動作が得られません。
- さまざまな倍率を試しました。
physics.SCALE
これは、現在の実装でのメートルあたりのピクセル数です。デフォルトはcanvasHeight / physics.heightOfWorldInMeter
です。 - さまざまなアニメーション ステップのタイミングを試しました。
- 使ってみた
requestAnimFrame
私はそれに慣れていないので、根本的に間違ったことをしている可能性があると思います。何が問題だと思いますか?体は決して休むことはなく、自然な行動でもありません。
前もって感謝します。
javascript - box2dwebで作成したボディを破棄する方法
box2dweb でこの非常に標準的な方法を使用して、マウス クリックでボディを作成します。
作成したボディに名前または ID を挿入する方法が本当にわかりません (最終的にはnum++
、すべての作成時に変数を追加できます)。また、IDを介して自分の体を取り戻し、.DestroyBodyメソッドを呼び出して具体的に削除する方法もわかりません。
私は JavaScript と Objective C の初期段階にいるので、Actionscript 用に作成されたメソッドとドキュメントは私を夢中にさせます..
前もって感謝します。
質問の更新:
この方法を使用して、すべてのオブジェクトの中から必要なオブジェクトを見つけて、作成済みのオブジェクトを元に戻す方法を見つけました。
注: myBody はグローバルです
prodNum は、サイクルごとに「++」を持つグローバル変数です。これにより、ボディの var 名と bodyDef.userData プロパティの両方を使用してボディを呼び戻すことができます。
window.onload を介して実行される init() で呼び出される次の関数を使用すると、console.log が示すように、取得したボディに必要なものを変更できますが、キャンバス内のボディには変更が適用されません。ログのプロパティが変更された結果、画面に変化が見られません。
なぜこれがすべて起こるのかわかりません..さらに、xミリ秒ごとに世界をリフレッシュするstep()関数をすでに設定しています...助けてください
javascript - このファイルが example5.js にある JavaScript を実行していないのはなぜですか?
このコードはインターネットで見つけました。メモ帳++に貼り付けてから、これら2つのファイルを変更して、デスクトップで作成したものと一致させました.
HTML ファイルに script タグがありますが、コードとファイルで試してみましたが、どちらも機能していないようです。
何らかの理由でページが機能しません。このページの違いと、なぜ機能しないのかを知りたいです。
次に example5.js ファイルを作成し、デスクトップにも置きます。これにより、画面にドロップしてドラッグできるいくつかのオブジェクトとともにキャンバスが表示されます。
以下は、コードが画面上に生成するはずのものです。これを例として使用したかったのですが、機能させることができませんでした。
これは私が現在ファイルを持っている方法です:
javascript - Liquidfun.js で b2DebugDraw と b2ContactListener は置き換えられましたか?
現在の Box2D ライブラリ ( box2dweb.js ) をGoogle の LiquidFunライブラリに置き換えようとしています。
主な違いは、すべてのb2#ClassName#クラスをモジュラー ( box2dwebBox2D.*
のような名前空間)に保つのではなく、グローバル スコープに配置したようです。
しかし、彼らはいくつかのb2#ClassName#を省略したようにも見えます。そのうちの 2 つは Box2dWeb.js バージョンから使用していました。
- b2DebugDraw、および;
- b2ContactListener ;
それらは非推奨/完全に実装されていない/忘れられていますか?
box2d - box2d を使用して引力を変更する方法はありますか?
前半は重力が上から、後半は重力が下になるようなシーンを作ろうとしています。
全世界の重力しか定義できないため、Box2D でこれを達成するにはどうすればよいですか。画面を 2 つの世界に分割する必要がありますか?