問題タブ [box2d]
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.
simulation - Box2D 物理エンジンを使用して、線路上の列車を上から見たままにするにはどうすればよいでしょうか?
Box2D のような物理ライブラリを使用して、線路をたどる列車の上面図やスイッチなどをモデル化するのは楽しいと思います。これを機能させるには、どのジョイントとモーターが必要ですか?
車がスプライン トラックをたどるのに必要な力を実装して、他の電車の車、歩行者、デロリアンなどに衝突できるようにする方法に興味があります。時間ステップごとに「車は現在スプライン(t)にある」と言うだけです。物理エンジンに過剰な力が発生します。私の理解が正しければ、車を 1 つの力でトラックに貼り付け、別の力でトラックと平行になるようにその角度を制限します (または、車の前後を 2 つの力でトラックに貼り付けます)。列車を前進させる別の力。これらのことを達成する方法の詳細を探しています。
math - ラジアン/秒で速度を設定すると、任意の半径のホイールの速度が一定になりますか?
box2d 物理エンジンでは、ホイールのジョイントのモーター速度をラジアン/秒で設定できます。
ホイールの最終的な実際の「速度」がホイールの半径に関係なく同じになるように、速度を設定できる式は何でしょうか。
現在、ホイールの速度を定数として wheelSpeed = 20 に設定しています。しかし、これには、小さなホイールよりも大きなホイールを速くする効果があります。モーター速度のラジアン/秒を計算する際に半径を使用したいので、関係なく同じ有効速度が得られます。
したがって、小さな車輪であれば、大きな車輪よりもはるかに頻繁に回転する必要があります。
2 * PI * Radius / 180 * Speed のようなことをする必要があると思いますか? または似たようなものですが、正確にはわかりません。
ホイール モーターの速度 (ラジアン/秒) に基づいて、ホイールのサイズに関係なくホイールの最終的な「速度」が一定になるようにします。
flash - Box2D:オブジェクトが別のオブジェクトと衝突しなくなったことを検出する方法は?
Flash Box2D の質問 (しかし、「フラッシュ」の部分は関係ないと思います)
キャラクターであるオブジェクトAと地面であるオブジェクトBがあるとします。
キャラクターが地面に触れたときだけ歩くことができるとします。
オブジェクトが別のオブジェクトに触れたときに検出できるボックス 2D コンタクト リスナーがあるため、これを使用して、キャラクターが地面に触れたときにリッスンできます。しかし、キャラクターが地面を離れたかどうかをどのように知ることができますか?
読んでくれてありがとう。
flash - Box2Dで耐荷重を計算する方法は?
私はBox2D(AS3 / Flashバージョン、重要な場合)を使用しており、各ボディがどれだけの重量を支えているかを計算しようとしています。
すべてのボディを反復処理する方法と、衝突検出ルーチンをポーリングする方法を知っていますが、ウェイトが適用されると、衝突力はゼロになります。私が見落としているある種の「総静的力」特性はありますか?
box2d - Box2D でラッピング ワールドを作成する方法
Box2D (すべてのオブジェクトの X 座標が 0 < X < 1000 (たとえば)) を使用して無限のラッピング ワールドを作成する必要があります。オブジェクトを前後にテレポートするゲームをいくつかプレイしましたが、もっと良い方法があるように感じます-何かアイデアはありますか? X スパンが約 50 を超えるオブジェクト (またはリンクされたオブジェクトのチェーン) はありません。たとえば、画面の幅よりも小さくなります。
カメラは一度に世界のごく一部しか見ることができません (幅約 5%、高さ 100% - 世界は高さ約 30、幅 1000)。
乾杯。
box2d - box2d 衝突グループ
(body1.categoryBits & body2.maskBits) && (body1.maskBits & body2.categoryBits) の場合にのみ体が衝突するかどうかは誰にもわかりませんか? または、(body1.categoryBits & body2.maskBits) || のときに既に衝突していますか? (body1.maskBits & body2.categoryBits) ?
c++ - インスタンス化できないオブジェクトを処理する最善の方法は?
以前にも同様の質問をいくつかしたと思いますが、私は茂みの周りを叩いていました。これは、私が完全に休むことができない本当の問題だと思います。
サード パーティのライブラリを扱っていますが、それ自体を作成できないオブジェクトがありますb2Body
。インスタンス化する必要がb2World
あります。個人的には、このデザイン パターンはあまり好きではありません。は世界から独立して存在し、必要に応じて世界に追加できるようにすべきだと思います。とにかく、何か余分なものを追加する必要があるため、独自のクラス class でラップしました。同様に、ラッパーがあります。今、私には3つのオプションがあると思います:b2Body
b2Body
Body
World
- Haveのコンストラクターは、完全にインスタンス化できる (内部のどこかを呼び出す) ため
Body
のポインターを受け取ります。つまり、次のようなコンストラクターがあります。World
b2World::CreateBody
Body *b = new Body(world_ptr)
- ライブラリがすでに行っているように、
Body
いくつかのメソッドに渡します-つまりWorld::CreateBody
Body *b = world.CreateBody(params);
- すべてのデータを複製して、
b2Body
必要に応じて使用できるようにします。ワールドに追加した後、データを使用するように「切り替え」b2Body
ます。Body b
world.addBody(b)
Body
(1) と (2) は、 aなしでは a を持てないことを意味しますがWorld
、これはおそらく必要ないでしょうが、そのオプションがあるといいかもしれません [他のオブジェクトなどのテンプレートとして使用できるように] ]。他にどんな長所と短所があるのか わかりません。(3) の方が優れているように見えますが、実装するのに手間がかかります。これは、既に に含まれているほとんどのデータを複製する必要があることを意味しb2Body
ます。
あなたの考えは何ですか?CW
誰も心配しないように、私はこれをします。
私はまだこれを休ませることができません。各オプションは次のようになります。
オプション 1: (私が好むもの)
オプション 2: (中間のどこか)
オプション 3: (Box2D の方法)
オプション 2 と 3 はそれほど違いはありませんが、オブジェクトの作成を制御できる人が変わります。
オプション3を実際に実装するにはどうすればよいですか?World::CreateBody()
whichをb2World::CreateBody(args)
呼び出しb2Body::b2Body()
て返す必要b2Body
がありますが、Body::Body(args)
これは問題です。はb2Body
完全に初期化されますが、ラッパーにはそれを行う場所がありません...より具体的には、どのように記述しWorld::CreateBody(const BodyDef &bd)
ますか? BodyDef は b2BodyDef から、Body は b2Body から、World は b2World から、などと仮定します。
documentation - Box2dドキュメント-時代遅れの、より良いAPI参照はありますか?
私はcocos2d+box2dを使用しており、「Hello World」チュートリアルを調べて他のチュートリアルを試してみると、最新のapirefに記載されていないように見える多くの構成を見つけています。
誰かが何が起こっているのかを明らかにすることができるでしょうか?または、b2PolygonDefをb2PolygonShapeに変更するなど、新しい構成をカバーしている人を正しい方向に向けてください。同様に、他に何を知っているサークル+についても、2009年8月以降ドキュメントの更新はないようです。
これは、この問題に関して私が見つけた唯一の情報であり、別のユーザーが多くの不一致も見つけたと述べています。
iphone - ゲームのフロアを作成するにはどうすればよいですか?
iPhone で Lunar Lander スタイルのゲームを作ろうとしています。Cocos2D があり、Box2D を使用します。ゲームの床を構築する最善の方法は何だろうと思っています。床のビジュアル面と物理エンジン用のデータの両方を作成できる必要があります。
ああ、私はグラフィック編集が苦手だと言いましたか?
c++ - このオブジェクトから継承できませんか?
この質問をフォローアップすると、次のような「オプション 3」を使用するよう提案されました。
しかし、これには 2 つの大きな問題があります。
Body
(プライベートでWorld::CreateBody
あるため)であっても、構築することはできませんb2Body
- できたとしても、
b2Body
パーツは正しく初期化されません (呼び出すb2World::CreateBody
必要があります)。
b2Body
これは、 /から継承してb2World
、この同じ設計パターンに従うことはできないということですか? (b2* クラスは編集できないことに注意してください)
もしそうなら、代わりにb2World
andb2Body
をメンバー変数として保持することをお勧めしますか?
現在、次の2つのオプションに帰着すると思います。