タグ付けされた質問 「farseer-physics-engine」

6
2D物理エンジンにラッピングワイヤ(Worms Ninja Ropeなど)を実装する
私は最近、ロープ物理学を試してみましたが、「標準的な」解決策-スプリングまたはジョイントでつながれた一連のオブジェクトからロープを作成すること-が満足できないことがわかりました。特にロープスイングがゲームプレイに関連する場合。ロープが巻き付いたり垂れ下がったりする能力はあまり気にしません(とにかくこれはビジュアルのために偽造されます)。 ゲームプレイにとって重要なのは、ロープが環境を包み込み、その後に包みを解く能力です。それはロープのように振る舞う必要さえありません-直線のセグメントで構成された「ワイヤ」はそうするでしょう。以下に例を示します。 これは、Wormsゲームの「Ninja Rope」に非常によく似ています。 私は2D物理エンジンを使用しているため、私の環境は2Dの凸ポリゴンで構成されています。(具体的には、FarseerでSATを使用しています。) だから私の質問はこれです:「ラッピング」効果をどのように実装しますか? ワイヤーが「分割」および「結合」する一連の線分で構成されていることは明らかです。そして、その線の最後の(アクティブな)セグメント(移動するオブジェクトがアタッチされる)は、固定長ジョイントになります。 しかし、アクティブなラインセグメントをいつ、どこで分割する必要があるかを決定するために必要な数学/アルゴリズムは何ですか また、前のセグメントと結合する必要がある場合はどうなりますか? (以前、この質問は動的環境でこれを行うことについても尋ねていました-私はそれを他の質問に分割することにしました。)

2
Farseerで爆弾を爆発させて、近くのオブジェクトを押しのける方法はありますか?
Farseerで爆弾の爆発を作成しようとしています。爆弾用の円を作成しました。ただし、爆弾が爆発した場合、爆発の巨大な力によって押し戻されるため、周囲のオブジェクト(物体)は飛び去ります。しかし、私はその力をどのように作成するかわからない-どうすればそれを行うことができますか?

3
farseer / box2dのような2D物理エンジン内でAIパスをどのようにフォローしますか?
私は、Farseerのような適切な剛体物理エンジンに取り組んでいる2Dトップダウンゲームを動かしている最中です。これまで、必要に応じて自分の物理コードをハッキングしていました。 ここで物事を行う適切な方法を学ぼうとしています。 AIを物理エンジン内で剛体にした後、設定されたパスをAIに追従させる適切な方法は何ですか? AIに追従する必要があるナビゲーションノードのパスがある場合、以前は次のタイムステップでの次の位置を計算し、その位置に手動で設定することで、パスに沿って手動で移動します。 しかし、今ではそれらは剛体であり、衝突や、それらにぶつかってそれらをパスから外す可能性のある力の影響を受けます。 だから、AIを動かすために、私は今、それらに衝動/力を適用すべきだと思いますか?フレームごとに手動で位置を設定する必要はもうありません。 だから私は決定論的世界からAIを強制的に非決定的世界に強制的に追いかける必要があると考えていますそれらを動かすために。 そうですか?それは他の人がそれを行う方法ですか? これは、AIが正確な道を歩いていないので、AIが風景の隅に引っかかるのを避ける方法についてのいくつかの質問を提起します。 または、何らかの方法で2つを混合し、AIの位置を手動で設定して固定パスをたどり、簡単に制御できる特定の状況でのみ他の力に反応させる方が良いでしょうか? アドバイスをありがとう。

3
Farseer 2.xが一時ではなく、メンバーとしてスタックを格納するのはなぜですか?(。ネット)
更新:この質問は、Farseer 2.xに関するものです。新しい3.xではこれができないようです。 現在、Farseer Physics Engineを非常に広範囲に使用していますが、クラスのメンバーとして多くの一時的な値の型を格納しているように見え、期待どおりにスタックに格納されていないようです。 これはBodyクラスの例です: private Vector2 _worldPositionTemp = Vector2.Zero; private Matrix _bodyMatrixTemp = Matrix.Identity; private Matrix _rotationMatrixTemp = Matrix.Identity; private Matrix _translationMatrixTemp = Matrix.Identity; public void GetBodyMatrix(out Matrix bodyMatrix) { Matrix.CreateTranslation(position.X, position.Y, 0, out _translationMatrixTemp); Matrix.CreateRotationZ(rotation, out _rotationMatrixTemp); Matrix.Multiply(ref _rotationMatrixTemp, ref _translationMatrixTemp, out bodyMatrix); } public Vector2 GetWorldPosition(Vector2 …

3
Farseerを使用した物理のタイリング
Farseer Physics Engineに問題があります。タイル化された環境では、オブジェクトが他のオブジェクトのコーナーと完全に位置合わせされていても、ときどき相互作用することがあります。 私は、マーチングスクエアなどを使用して、1つの大きなオブジェクトを計算して作成することを提案している人々について読みました。ただし、摩擦や反発力の違いなど、各タイルに異なる物理的品質を持たせたいので、これはオプションではありません。 私の質問は、正確にそれを引き起こしているのは何ですか、それは浮動小数点精度の問題か何かですか?そして、物理エンジン全体を壊さずにそれを修正する方法はありますか?

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

5
モンスターがプラットフォームを歩き回らないようにするにはどうすればよいですか?
それについてのチュートリアルを見つけるのはかなり簡単なはずだと思うので、私を夢中にさせている質問があります。現在、XNAとFarseerを使用して、シンプルなプラットフォーマーゲームを作成しています。もうすぐ完成ですが、モンスターをもっとスマートにしてほしいです。この場合、私は自分のモンスターが崖から落ちてほしくないことを意味します。 簡単に言うと、モンスターが方向を変えるタイミングを決定するために、「モンスター」の前の領域をチェックするものが欲しいのです。皆さんは私を正しい方向に向けることができますか? 私は何を使うことになっていますか?これをチェックするための簡単な解決策または簡単なアルゴリズムが存在するはずです、いいえ?

3
反転したテクスチャ
座標系の原点が画面の中心にあるこの物理ボディに合わせてテクスチャを描画しようとしています。(XNA)Spritebatchのデフォルトの原点は左上隅に設定されています。テクスチャを正しく配置しましたが、テクスチャが上下反転していることに気付きました。つまり、レンダリング時に上向きの矢印テクスチャが下向きになります。数学のどこが間違っているのかわかりません。 私のアプローチは、すべてを物理のメートル単位に変換し、それに応じて描画することです。 Matrix proj = Matrix.CreateOrthographic(scale * graphics.GraphicsDevice.Viewport.AspectRatio, scale, 0, 1); Matrix view = Matrix.Identity; effect.World = Matrix.Identity; effect.View = view; effect.Projection = proj; effect.TextureEnabled = true; effect.VertexColorEnabled = true; effect.Techniques[0].Passes[0].Apply(); SpriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, null, DepthStencilState.Default, RasterizerState.CullNone, effect); m_Paddles[1].Draw(gameTime); SpriteBatch.End(); ここで、Paddle :: Drawは次のようになります。 SpriteBatch.Draw(paddleTexture, mBody.Position, null, Color.White, 0f, new Vector2(16f, 16f), …

2
Farseerで非常に特殊な種類のジョイントを作成するにはどうすればよいですか?
編集する 問題は解決しました(Drackirの回答を参照)。これが私がこのジョイントで達成しようとしていたことのデモです。この他の質問のシナリオに関する詳細情報。 問題 Farseerで、次のように動作する非常に特殊なタイプのジョイントを作成しようとしています。 オブジェクトは、X軸とY軸の両方で常にオブジェクト間の距離を同じに保つ必要があります。 移動-オブジェクトの1つとの衝突により、グループ全体が一緒に移動する必要がありますが、グループは回転してはなりません。トルクの結果として、個々のオブジェクトのみが中心の周りを回転できます。 回転-オブジェクトは常に同じ回転でなければなりません。オブジェクトの1つとの衝突により、他のすべてのオブジェクトがまったく同じ量だけ回転するはずです。 ここに写真があります: 箱から出してFarseerでこれを実現する方法がない場合は、それを拡張して、このような動作をする新しいタイプの結合を作成するにはどうすればよいですか?基本的に私はすべてのボディが他のボディの「クローン」のように動作することを望みますが、それらの間のオフセットは固定されています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.