タグ付けされた質問 「box2d」

Box2Dは、C ++で記述されたゲーム用のオープンソースの剛体2D物理シミュレーションライブラリであり、さまざまな言語のポートを備えています

3
速いものを遅く見えるようにする(Box2D)
私はあなたがトレビュシェットを操作して対戦相手にボールを投げるゲームに取り組んでいます。 「中世の包囲」と呼ばれるゲームのようなものです。トレビュシェットが腕を振っているとき、プレーヤーはボタンを押してボールをリリースする最高の瞬間をつかむ必要があります。その後、ボールは接線角度で飛行します。 私の今の問題は、トレビュシェットの腕が速く振れすぎて、プレーヤーが適切な瞬間を捉えられないことです。その間、それはこれほど速くなければなりません、さもなければそれは十分に投げることができません。また、ボールとトレビュシェットアームをつなぐ小さなひもがあり、アームの動きが遅すぎると、アームが動くときにボールがひもにぶら下がっています。 ステップサイズを切り替えることで問題を解決し、腕を振るたびに、ステップサイズを1/60から1/200に変更します。そして、プレーヤーがボールをリリースすると、それは1/60に戻ります。 これは、私のゲームがネットワーキングを備えたマルチプレイヤー用であることを除いて、かなりうまくいきます。したがって、ステップを変更すると問題が発生する可能性があります。 私が考えることができるもう1つの解決策は、ゆっくりスイングできるようにすることですが、プレーヤーがボールをリリースするとき、方向を維持しながら手動でボールに速度を追加します。私はこのソリューションがあまり好きではないので、見た目が偽になり、ストリングを非常に短くしない限り、ボールがストリングにぶら下がっているという問題がまだあります。 これに少し光を当ててください、ありがとう! 編集 みんなの意見をありがとう、私は腕をゆっくり振って問題を解決し、プレーヤーがボールをリリースするとき、ボールの速度と2倍をつかみます。これは、ステップサイズを変更した場合とまったく同じように見えます。やらなければならないことがもう1つあります。腕の揺れが非常に遅いため、ボールが揺れるのではなく、腕の端にぶら下がっているだけです。私は、スイング期間中およびスイング期間中のみ、ボールに重力と等しい力を加えることによってこれを解決しました。それから、それはもはやそこにぶら下がらず、腕と一緒にスイングします。 @MrCrankyの答えは詳細であり、実行可能であるように見えるので、私はそれを受け入れます。:)

1
基本的なBox2D衝突検出
Cocos2D / Box2Dで衝突をリッスンする方法がわかりません。2つのダイナミックサークルボディがあるとします。1つは非常に小さく、もう1つは比較的大きいです。小さな円が大きな円と衝突するとき、私は何かをしたいです(たとえば、音を出します)。これを行う最良の方法は何ですか? 現在、TestPointメソッドを使用して実験しています。何かのようなもの: if(largeCircleBody->GetFixtureList()->TestPoint(smallCirclePoint)){ // collision happened... // play sound etc }

2
カバーと距離を考慮して損傷を引き起こす2D爆発を実装する方法は?
箱や他のカバーの後ろに隠れているキャラクターへのダメージを少なくする方法で2D爆発を実装するにはどうすればよいですか?理想的には、損傷はカバーの強度に依存します(たとえば、金属製の壁は木製の箱よりも保護されます)。理想的には、距離とともにダメージも減少します。 Box2D物理エンジンのポート-Farseerを使用します。 ありがとうございました。

1
Box2D WorldCenterと位置の違い
そのため、この問題は数日間続いています。まず、言うBody.getWorldCenter()とBody.getPosition()の違いは何ですか。WorldCenterは重心か何かに関係があるかもしれないと聞いた。 次に、スプ​​ライトのBox2Dボディを作成すると、ボディは常に左下隅にあります。box.getWorldCenter()の周りに1ピクセルの長方形を印刷して確認します。ボディがスプライトの中央にあり、バウンディングボックスがスプライトを包み込む必要があると私が理解していることから、正しいですか? これが私が何を意味するかのイメージです(The Sprite is Red、Body Blue): ここにいくつかのコードがあります: ボディクリエーター: public static Body createBoxBody( final World pPhysicsWorld, final BodyType pBodyType, final FixtureDef pFixtureDef, Sprite pSprite ) { float pRotation = 0; float pCenterX = pSprite.getX() + pSprite.getWidth() / 2; float pCenterY = pSprite.getY() + pSprite.getHeight() / 2; float pWidth = pSprite.getWidth(); …

1
b2World全体の定義をコピーまたは逆計算するにはどうすればよいですか?
複数のBox2D b2World間でボディを移動またはコピーできるようにしたいプラットフォーマーに取り組んでいます。欲望が3倍になりました-エディターでドキュメント間でオブジェクトを移動し、通常のゲームプレイでプレイヤーをレベル間で移動し、プレイヤーがゲーム内で発射できる重要な発射体のプレビューを提供します。最も正確には、数秒先の世界をシミュレートします。 それはのように見える、世界では各ボディのためにDEFに身体データ背中をコピーし、それを再作成して、それからやる、その後、同じ方法でそれに備品をコピーする-私は「長い道のり」パラレルワールドを作ることができます関節についても同じです。すべての速度を再設定します。「コピー」ではなく「移動」の場合は、元のコピーを削除します。 誰かがすでにこのコードを書いているかどうか(そして、もしそうなら、それが実際に機能する設計かどうか?)
8 c++  physics  box2d 

2
ボックス2D原点設定
box2dシェイプの原点を設定しようとしています。デフォルトでは、シェイプは中心を中心に回転します。ただし、図形の左側を中心に回転させるようにしています。たとえば時計のように。 SetXFormなどのことを聞いたことがありますが、その関数は存在していないようです。あなたがそれを知る必要がある場合に備えて、私はC ++を使用しています。 よろしくお願いします。どんな助けでもありがたいです。
8 2d  physics  box2d 

6
Box2dとBulletの物理シミュレーションは内部でどのように機能しますか?
box2dとbulletがJavaScriptに移植されたのを見ましたが、ソースコードを除いて、どちらも私を惹きつけませんでした。中を見ると、それはすべてとてもシンプルに見えました。 すばらしい物理シミュレーションを得るために、各ライブラリ内で何をしていますか?説明が見つからない。

1
Box2Dでプレイヤーと発射物の衝突を予測するにはどうすればよいですか?
物理エンジンとしてBox2Dを使用して、リアルタイムのシューティングゲームを作成しています。ゲームプレイは主に、Angry Birdsのような軌道に関するものです。スローモーションエフェクトを作成し、プレーヤーが倒されたときにカメラをプレーヤーに移動したいのですが、実際に衝突が発生する前に、石が空中にあるときにエフェクトを開始する必要があります。 損傷の大きさは衝突時にのみインパルスに基づいて計算されます。これはリアルタイムゲームであるため、プレイヤーはラグなくキャラクターの物理体を動かすことができなければなりません。 どうすれば彼らの死を予測できますか?可能ですか?レイキャストすることはできますが、別のオブジェクトが移動してそのパスをブロックするとどうなりますか?

4
Box2Dボールを一定の高さにバウンドさせる
Doodle Jumpのようなゲームを作りたいです。私はlibgdxとBox2dを使用しています。ボールを常に同じ高さでバウンドさせる方法についてアドバイスが必要です。 ボールのボディ復元を1に設定して、常にジャンプできるようにしましたが、ブロックでジャンプすると、「インパルス」が小さくなります。また、衝突を検出してインパルスを加えようとしましたが、うまくいきませんでした。 毎回同じ高さにボールをバウンドさせるにはどうすればよいですか?
8 physics  box2d  libgdx 

1
Box2Dでは、特定のボディの圧縮力を取得するにはどうすればよいですか?
Box2Dを使用しています。ご覧のとおり、互いに接続された3つの動的ボディがあります(正面から見ると、テーブルと考えてください)。LEG1とLEG2は静的ボディに接続されています(これは接地ボディです)。別の動的ボディがテーブルに落ちています。 LEG1とLEG2で別々に圧縮を取得する必要があります。 ジョイントにはGetReactionForce()を返す関数がありb2Vec、これはLength()とLengthSqd()関数を持っています。これにより、取得した関節の力の合計が得られます。しかし、私が必要としているのは、関節とつながっている個々の体の力です。単一のジョイントで複数のボディを接続すると、役に立たない力の合計が再び表示されます。これが私が話しているケースです:

2
box2dの一部のオブジェクトの物理的な衝突を無視する方法
これはばかげているように聞こえるかもしれませんが、いくつかのオブジェクトは物理学に従い、他のオブジェクトは互いに衝突しないようにします。 私はそれらの位置を排他的に設定することによってそれらを達成しようとしました。しかし、それはすべての物理学を無視します。 私がやろうとしていることは可能ですか?
8 physics  box2d 

6
yの変更によるplayer.isFalling()の決定?
私は現在Box2Dを使用していて、私のキャラクターはBox2Dのフィクスチャの集まりです。プレーヤーが落ちているかどうかを判断するために、Y位置の変化を検出することが適切かどうか疑問に思っていましたか? 私が考えていない他の方法があるのでしょうか?この種のことは通常どのように検出されますか?
8 c++  physics  box2d 

4
雨の効果を降雪ではなく雨のようにするにはどうすればよいですか?
私はそのゲームでゲームを作っています。雨のエフェクトが欲しいです。私は今これから少し離れています。以下のような雨の効果を作成しています: particleSystem.addParticleInitializer(new ColorInitializer(1, 1, 1)); particleSystem.addParticleInitializer(new AlphaInitializer(0)); particleSystem.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE); particleSystem.addParticleInitializer(new VelocityInitializer(2, 2, 20, 10)); particleSystem.addParticleInitializer(new RotationInitializer(0.0f, 30.0f)); particleSystem.addParticleModifier(new ScaleModifier(1.0f, 2.0f, 0, 150)); particleSystem.addParticleModifier(new ColorModifier(1, 1, 1, 1f, 1, 1, 1, 3)); particleSystem.addParticleModifier(new ColorModifier(1, 1, 1f, 1, 1, 1, 1, 6)); particleSystem.addParticleModifier(new AlphaModifier(0, 1, 0, 3)); particleSystem.addParticleModifier(new AlphaModifier(1, 0, 1, 125)); …


1
スプライトがBox2Dボディからオフセットして表示されるのはなぜですか?
これについては、デバッグレンダラーを使用して確認しました。ゲームが始まると、すべてが順調です。しかし、衝突が発生すると、スプライトの回転はその本体よりもはるかに大きくなります。ボディが完全に水平の場合、スプライトとボディは一致します。 スプライトの回転の原点は、本来あるべき場所から遠く離れているようです。これが私のコードです: Sprite sprite = data.sprite; position = body.getPosition(); sprite.setPosition( position.x - sprite.getWidth() / 2, position.y - sprite.getHeight() / 2 ); sprite.setOrigin(position.x, position.y); sprite.setRotation(MathUtils.radiansToDegrees * body.getAngle()); ご覧のとおり、回転の中心を設定しようとしてsetOriginも成功していません。どうすれば修正できますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.