問題タブ [game-physics]
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.
c# - WPFでの物理シミュレーションを支援する
私は2Dゲームの簡単な物理学を勉強していますが、私がやろうとしているシミュレーションの助けを求めています。
地面の固定ボールの上に落ちるバーがあります。下のxaml:
重力によるバーの落下をシミュレートするためにすべての計算を行いましたが、本当に助けが必要なのは、バーがボールに当たると、一方の側が地面に、もう一方の側がボールの上にあるということです。 xamlでよく表されます:
そして、物理学の観点から、左側がボールの上にある間に、バーの左側を地面にぶつける方法がわかりません。
Farseenのような素晴らしい物理エンジンが利用できることは知っていますが、この場合にどのように機能するかを理解したいと思います。
時間に基づいてバーのYを取得する方法を知っているので、ボールと衝突するまでチェックを続けますが、その後はどうなりますか?
ありがとう!
c# - A* を使用し、まだ衝突を回避していますか?
私はタワー ディフェンス ゲームを設計しており、そのために A* パスファインディング アルゴリズムを使用して、スポーン エリアから目的地に到達しています。
ここでの問題は、すべてのユニットが積み重なり、見た目がよくないことです。代わりに何らかの方法でそれらをグループ化し、十分なスペースがない場合はさらに広げる方法はありますか?
このアルゴリズムは、すべてのユニットが一度に 1 つのタイルを移動するように機能します。
java - ゲームにおける地形と衝突
車両が地面に沿って走行する新しいゲームを作成しようとしていますが、スラスターを使用して一時的に空中に浮く機能もあります。
私はゲーム プログラミングに関しては比較的初心者ですが、Java、C、C++ などでのコーディングはかなり得意なので、それが問題になるとは思いません (ゲームの最初のイテレーションは Java であると考えていました)。私の問題は、私がゼロから始めていることであり、車両が通り抜けないように地形を障壁にする方法を考えることができないということです. そして、どうすれば落下ダメージを受ける可能性がありますか?
過去に、これがすでに含まれているため、レプリカ島のソースに誘導されました。衝突システム全体が表示されますが、これまでのところ、それを理解することができず、誰かが喜んでくれることを望んでいました.私に手を貸してください。
ありがとうございました
-ロフラ
pygame - Pygame、単純な物理エンジン、平面間のポイントを保持する方法は?
このチュートリアルをPygame(Python)で作成しようとしていますが、平面間のポイントの保持に問題があります。
私のコードは:fiz2.py
ベクトルクラス:vector.py
Pygame画面でマウスを動かすと、飛行機が回転します。そして、平面が回転しているとき、点は平面を通過して外に出ています。
反復ごとにポイントの位置を修正しようとしましたが、それでもプレーンを通過しました。どこに固定すればいいのかわからない。
注:コードが少し乱雑であることはわかっています。これは私の最初の2Dプログラムであり、Pygameの座標平面とベクトルに慣れるのに非常に苦労しました。これを解決したら書き直します。
注2:はい、チュートリアルで平面間のポイントを保持する方法についてコメントを書きました。彼が位置を修正する方法は理解していますが、それを実装する方法(およびコード内のどこ)についてはわかりません。
ありがとう。
game-physics - verlet 統合による非常に基本的な衝突解決
私は自分の娯楽のためにいくつかの非常に基本的な物理学を行う方法を学んでいますが、奇妙な問題に遭遇しています.
http://www.lonesock.net/article/verlet.htmlで説明されているように、時間補正されたベルレット統合方法を使用していますが、これまでのところ、かなりうまく機能しています。動きも物も全部いい感じです。
私の問題は、衝突の解決に関して発生します。地形は動かないので、地形に対して解決できます (かなりうまくいくようです)。プレイヤーの現在位置を安全な場所に設定したところ、問題はないようです。しかし、別のスプライト (物理的なアクターなど) に対して解決しようとすると、物事があちこちで発砲するように見えます。
私の解決コードは次のようになります。
ご覧のとおり、衝突したスプライトが物理的なものかどうかによって、3 つのケースがあります。
おそらく、この問題が発生した最初のケースです。そして、同じ関数を使用して、(一見動作している) 地形衝突にある貫通深度を取得しています。
衝突したスプライトがあちこちに飛んでいくのはなぜですか? 私はこの問題にかなり困惑しています。どんな助けでも素晴らしいでしょう。
cuda - 物理エンジンに必要なアドバイス
私は最近、物理エンジンを構築するプロジェクトを開始しました。私はあなたが私にいくつかのドキュメンテーションおよび/またはこれのための最高の技術に関連するいくつかのアドバイスを与えることができることを望んでいました。
まず、当面の課題にはGame-Physics-Engine-Developmentが強く推奨されているのを見て、セカンドオピニオンをいただけないでしょうか。また、Amazonを閲覧しているときに、 ゲームエンジンアーキテクチャに出くわしました。ゲーム用の物理エンジンを構築したいので、これも良い読み物かもしれないと思いました。
第二に、物理学のシミュレーションは計算量が非常に多いことを知っているので、CUDAまたはOpenCLのいずれかを使用したいと思います。NVIDIAとATIの両方のチップセットで動作するため、今はOpenCLに傾倒しています。皆さんは何を提案しますか?
PS:Linux上のC++でこれを実装します。
ありがとう。
math - 等長関数
曲げ技術を GPU に組み込む予定です。棒を曲げるように。実際の物理演算を行う必要はありませんが、曲げ関数 (頂点を変位させるため) を同じ長さにしたいと考えています。
私の関数は2つのコンポーネントから構築されます:
- スティックの y 位置
- 棒にかかる力 (風のように特定の場所ではなく、一般的なもの)
私は x 方向に曲がっています。x = y * force
数式を作成することはできますが、問題は、オブジェクトの長さが変形することです。
実際の長さを維持しながら、オブジェクトを変形するにはどうすればよいですか? 関数を制約するにはどうすればよいですか?
または別の方法で:
y 区間の長さを維持しながら、多項式関数の累乗を調整するにはどうすればよいですか? 例えば。[0,1]
c++ - テンプレートを使用して、物理衝突を二重にディスパッチしようとしています
物理衝突システムの関数の接続をコンパイラに構築させたいと考えています。私はテスト衝突機能を持っています:
次に、コライダー オブジェクトを使用して衝突オブジェクトを保持します。
エフェクト関数に一定レベルの間接性を追加しました
私が行き着きたいと思っているのは、正しい関数シグネチャを持ち、ヒットしない型を必要としない任意のオブジェクトで関数を呼び出す方法です。
壁にぶつかる壁の機能を持たせたくないことに注意してください。発生する必要がある相互作用の関数のみを作成または提供したい。VictimEffect は派生関数を「認識」しないため、これが機能しないことはわかっています。
テンプレートパラメーターが使用されているすべての場所で、テンプレートパラメーターを指定せずにディスパッチしたい。衝突可能とは別に衝突可能効果を構築し、それを衝突可能オブジェクトに一般的に与えたいと考えています。衝突できるもののコレクションごとに異なる衝突可能なオブジェクトを持ちたくありません。基本的に欲しい
ここには間接的な層がもっと必要ですが、それが見えません。コンパイル時にすべての情報が利用可能であるため、それが可能であることはわかっています。動的なポリモーフィック ソリューションは必要ありません。
どんな助けでも大歓迎です!
更新 私がやろうとしているのは、独自の最新の (Andrei の本のように) ゲーム ライブラリを構築することです。これまでのところ、私はほとんどの関係を解決してきましたが、これには困惑しています. これは時間的に重要な問題ではなく、結果が重要な問題です。私は何年もの間ゲームの仕事をしてきましたが、私が取り組んできたゲーム エンジンはどれも好きではありません。これは、使いやすく、拡張しやすいことを目的としています。コンソール コンパイラがそれほどひどくなくなったので、どのプラットフォームでも動作します。
これは、私が書きたいことの簡単な例です。
すべての Physics は WIP であり、私が望むところには行き着いていませんが、それは達成されつつあります。System object は、Windows とプラットフォーム固有のレンダラーを初期化します。この場合はopenGLです。コンソール アプリとしてコンパイルされますが、すべての Windows コンポーネントを作成します。私は人々に main() と winmain() を扱いたくありませんでした。物理学を除いて、継承はありません。シーンをシステムに取り込むと、3 つのレンダー コールが 1 つに置き換えられます。少し前に書いたものを、Gary Powell と Martin Weiser の View テンプレート ライブラリと組み合わせて使用する予定です。
私はそれを正しく見ていないことを知っています。訪問者は、私のアプローチを変えるのに役立ちます。
それが私がやろうとしていることです。
更新 2 OK。これまでのコメントと回答からインスピレーションを得て、ここに行きましたが、まだ終わっていません。
それを使用するには、これを行います
万能は正しかった。ベースを渡すことで型情報を失っていました。今のベースは、どうでもいいことをキャッチするためだけにあります。
私のコンテナでは、タイプリストを使用してコンテナに追加されたすべてのタイプを収集し、それを使用して情報を処理するタイプ固有のコンテナを宣言できると思います。ただし、関数オブジェクトを渡す方が簡単な通常のイテレータを取り出すことができないという問題があります。
おそらく、C++ 0X はその新しい未知の型変数に役立つでしょう。(名前は忘れました)。
android - AndEngine 物理ジョイント
私はAndEngine for Androidを使用しています。
シーンを作成するとき、そこに 2 つの物理オブジェクトを配置します。移動中は常に同じ距離になるようにします。
DistanceJointを使用しようとしましたが、長さを設定する方法がわかりません。この長さはピクセル単位ではありません...設定したい: distancejoint.length = "distance between objects in scene initialization"
。
physics - 回転しながら加速している物体の位置を計算するにはどうすればよいですか?
私は単純なゲームを書こうとしていますが、単純な物理学だと思うものに行き詰まっています。ポイント 0,0,0 で、たとえば 1 秒あたり 1 単位で移動するオブジェクトがあります。オブジェクトが 1 秒あたり 15 度、6 秒間回転し (開始位置の右 90 度になる)、1 秒あたり 1 単位で 4 秒間加速するように指示した場合 (つまり、最終速度は 5 です)単位/秒)、その終点をどのように計算しますか?
加速していない物体についてこれに答える方法を知っていると思います。なぜなら、それはただの円だからです。上記の例では、円の円周は距離の 4 倍であることがわかり (円の 1/4 を横切っているため)、そこから半径と角度を計算し、単純な三角関数を使用して答えを解くことができます。
ただし、任意の時点で、オブジェクトは前の瞬間よりもわずかに速く移動しているため、最終結果は円ではなく、ある種の円弧になります。各ステップ (たとえば 1 秒あたり 60 ステップ) をループすることで終点を推定できると思いますが、これはエラーが発生しやすく、非効率的です。
誰かが私を正しい方向に向けることができますか?