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

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

5
2Dロープ衝突検出
次のyoutubeビデオのように、オブジェクトと衝突できるロープを作成したいです。 2Dゲーム物理ロープ ポイントを使用し、これらのポイントを線で接続するverlet統合を実装すると考えています。ビデオで効果を得るために、ロープにどのタイプの衝突検出を適用するかを考えています。 私はあなたが各ポイントにいくつかのCDを実行する必要があると思います。box2Dを使用したいので、各ポイントをリジッドボディにしたいと思いますか?アドバイスをいただければ幸いです。

3
2Dオブジェクトをラッピングするピンと張ったワイヤーによって加えられる力を計算するにはどうすればよいですか?
私が「ワイヤー」と呼ぶ物理プリミティブがあり、2D環境にラップされていると仮定します(この質問で説明されているように)。 これはどのようなものかを示す図です。 例の図では、ボックスはワイヤーによって上方に(持ち上げられて)引っ張られており、ボックスはワイヤーを下方に引っ張っています。スプリング上の物体はワイヤーによって押し下げられていますが、ワイヤーを押し上げています。 私はまだそれを実装する方法を理解していませんが、ワイヤーがラップされているポイントを横切ってワイヤーが自由にスライドすると仮定します。 2D物理シミュレーション(つまり、フレームベース)では、このようなワイヤーに接続またはラップされているオブジェクトに適用する力(またはインパルス)をどのように計算しますか? 最初の質問で触れたように、ワイヤー上の「静的な」オブジェクトが最後の質量である場合、力は前の質量と点の間の固定長のジョイントと同じになると想像しますワイヤーで。

5
プラットフォーマーゲームでスイングを簡単に実装するにはどうすればよいですか?
プレイヤーがロープを使ってスイングできるゲームを開発していて(スパイダーマンやバイオニックコマンドーのように)、この動作の実装に問題があります。誰かが私にこれを行う方法を手伝ってくれる?物理学の公式などを意味します。これまで、私は3つのアイデアを考え出しました。1つは春を使用していますが、それは多くの時間を消費し、時々びくびくしています。他の2つは次のステップを計算しようとしています(1つはポテンシャルエネルギーの計算によるもので、もう1つはトルクの計算によるものです)。両方とも、俳優がスイングしようとするたびにほとんどクラッシュします。 トルクを計算するために私が書いたコードは次のとおりです。 float dx = Runner->getPosition().x - ancher.x; float dy = Runner->getPosition().y - ancher.y; float t0 = atan2(dy,dx); //my current angle float k = ((dy) *vx - (dx) * vy) / (dx * dx+dy * dy); //previus angular velocity k -= gravity * cos(t0) *dt; // new angular velocity (gravity …

2
ロープを作成するには?
このゲームを再現したいのですが、ロープの作成方法や、ボールへの影響がわかりません。 基本的に、一方の端にマウスポインターに「取り付けられた」ロープがあり、もう一方の端には大きなボールに取り付けられたロープがあります。ユーザーがマウスを動かすと、まるで殻竿などを振るように、ロープとボールが動きます。 上記のゲームのようにロープを作成するにはどうすればよいですか? 既存のライブラリを使用してロープを作成する方法ではなく、そのようなロープの作成の背後にある基本的な概念と物理学を知る必要があります。ロープを最初から実装できるようにしたいので、どのように実行できるかを知る必要があります。 ありがとう!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.