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

空間と時間を介したオブジェクトの動きに関連します。加速(推力と重力)、質量、衝突応答、摩擦などの概念を含みます。

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

1
衝突チェックのために2つの高速移動オブジェクトを送信する必要があるかどうかの判断
基本的な2D物理エンジンを実行しています。これはほとんどパーティクルエンジンであり、AABBや円などの基本的な形状を使用するだけなので、回転はできません。私はCCDを実装しており、2つの高速移動オブジェクトに正確なTOIを与えることができ、すべてがスムーズに機能しています。 今の私の問題は、最初に2つの高速移動オブジェクトを互いにチェックする必要があるかどうかを判断する方法を理解できないことです。空間分割と高速移動オブジェクトごとに四分木を使用しています。通過する各セル内のオブジェクトと照合します。これは、静的なジオメトリとの衝突を決定するのにうまく機能しますが、衝突する可能性があるが、チェックされているセルのいずれにもない他の高速移動オブジェクトは考慮されないことを意味します。 私が考えることができる唯一の解決策は、セルを十分に大きくして、これで十分であるフィンガーをクロスさせるか、ある種のブルートフォースアルゴリズムを実装することです。これに対処する適切な方法はありますか、おそらく誰かがこの問題を効率的な方法で解決しました。それとも、これを説明するスペースを分割するより良い方法があるでしょうか? ここに図があります: オブジェクトAとBの「影響範囲」が交差しているため、それらを相互にチェックする必要があります。しかし、現在衝突をチェックしている方法では、これは考慮されていません。繰り返しになりますが、速度がxまたは何かよりも高くなったときにオブジェクトのパスが交差するかどうかを実際にチェックするなど、これに対するいくつかの解決策を考えることができますが、それはハックのように感じ、試行錯誤します。

2
カーレースゲームのブレーキアシストはどのように機能しますか?
PCカーレースのゲームには、このユニークな運転支援機能を備えた多くのゲームがあり、安全に車を回転させるためにブレーキをかけるのに役立ちます。一部のゲームでは「アシスト」にすぎませんが、車のブレーキには役立ちますが、安全な方向転換は保証されません。他の人の間では、ブレーキアシストが安全な方向転換に役立ちます。私はそれを達成するために従うアルゴリズムが何なのか疑問に思っていました。 私が考えることができる非常に基本的なアルゴリズムは、 曲がる半径に応じて、トラックのすべての曲がり角で理想的な車の制動距離を事前に決定し、それに応じて車の制動を開始します。たとえば、90 o未満のターンの場合、車はターンの開始から50mの距離で自動的にブレーキをかけます。 安全な方向転換を保証するより高度なアルゴリズムは、 各ターンの開始時の車の速度を、トラック、ターン、車ごとに個別に事前に決定します。また、各自動車の減速率を個別に事前に決定します。これは、自動車の性能のために異なります。 ブレーキアシストは、特定の瞬間の車の速度を記録し続けます。 ターンの開始時に必要な正確な速度に車が到達するように、適切に車にブレーキをかけます。 たとえば、半径43mのターンの開始時の特定の車の速度を120km / hとします。車の減速率を200km / h 2とする。ある時点で車の速度が200km / hの場合、車はターンの開始から400mで自動的にブレーキをかけます。
8 physics  racing 

2
エンジンは、物理エンジンで「フェーズロック」(同じ場所にある複数のオブジェクト)をどのように回避しますか?
最初にフェーズロックについて説明します。質量がゼロではない2つのオブジェクトが同じ空間を占めているが、エネルギーがゼロ(速度なし)である場合。 それらはゼロ速度解像度ベクトルで永遠にぶつかりますか、それとも外部の力が相互作用するまで一緒にロックされたままですか? 自作のエンジンで、キャラクターをツリーにロードして移動すると、衝突を通知して元の場所に戻ることに気づきました。これは、衝突が発生したときにインパルスを実装することで解決できたと思います。私の最後の場所(私の実装のようなもの)にジャンプするだけではありません。 しかし、私は自分のエンジンをより堅牢にしていますが、他のほとんどの物理エンジンがこのケースをどのように処理するかについて興味があります。移動速度のない同じ場所で始まるオブジェクトは、ランダムな方向に互いに発射するだけですか?または何かが起こるまで彼らはそこに座っていますか?一般的にどのオプションが最善のアプローチですか?

2
物理シミュレーションのタイムステップスキーム
物理シミュレーションのステップに使用される操作は、最も一般的です。 速度と位置を統合する 衝突の検出と解決 連絡先の解決(高度な場合) 少し前に私はスタンフォード大学からこの文書に出くわしました。 衝突の検出と解決 速度を統合する 連絡先の解決 位置を統合 スタッキングの問題に対する強力なソリューションを可能にするため、興味深いものです。それで不思議に思いました... 単純なものでも複雑なものでも、もしあれば、代替スキームは何ですか?それらの利点、欠点、およびパフォーマンスの考慮事項は何ですか?

3
パスの最後で移動オブジェクトをスムーズに停止させるにはどうすればよいですか?
この質問の言い方は十数通りありますが、私の考えを一致させるために、私は目の前の問題に合わせてそれを表現しています。 そこで、指定されたポイントから別のポイントに移動し、最初のポイントに戻って、2つの間を直線で通過できるようにするフローティングプラットフォームを作成しています。ただし、少し面白くするために、プラットフォームにいくつかのルールを追加したいと思います。 ワールドデータのタイル値全体の複数を移動するようにコーディングしています。したがって、プラットフォームが静止していない場合、少なくとも1つのタイル幅全体またはタイル高さを移動します。 1つのタイルの長さ内で、停止から指定された最大速度まで加速させたいと思います。 1つのタイルの長さの距離に達したら、特定のタイル座標で停止するまで減速し、逆のプロセスを繰り返します。 最初の2つの部分はそれほど難しくありません。基本的に、3番目の部分では問題があります。プラットフォームがタイル座標で正確に停止するようにしたいのですが、加速度で作業しているので、1つのタイルの長さに達したら、プラットフォームの現在の速度を格納する値に反対方向の加速度を適用し始めるのは簡単に思えます。距離(タイルが複数のタイル長を移動していると仮定しますが、単純にするために、それがそうであると仮定しましょう)-しかし、問題は、この効果を生み出すために増加する加速の正しい値は何でしょうか?どうすればその値を見つけることができますか?
8 xna  2d  xna-4.0  physics 

2
「Advanced Character Physics」に基づく物理エンジンで摩擦を実装する方法
Thomas Jakobsenによる古典的なテキストAdvanced Character Physicsの概念に基づいて、物理エンジンを実装しました。摩擦については記事でごく簡単に説明しているだけで、Jakobsen自身は「これよりも優れた摩擦モデルを実装できるはずである」と述べています。 一般的に、前述の記事の概念に加えて、信頼できる摩擦モデルをどのように実装できますか?そして、どのようにして見つけられた摩擦を円の回転に変換できますか? この質問を私の具体的な実装についてではなく、より一般的にはヤコブセンスのアイデアを優れた摩擦システムと組み合わせる方法について質問したくありません。しかし、これは摩擦をまったく処理しない私のエンジンの現在の状態を示すライブデモです。。http //jsfiddle.net/Z7ECB/embedded/result/ 以下は、この論文に基づいたエンジンで衝突検出がどのように機能するかを示した例です。Verlet統合では、現在と以前の位置が常に保存されます。これらに基づいて、新しい位置が計算されます。すべてのフレームで、円と線の間の距離を計算します。この距離が円の半径よりも小さい場合、衝突が発生しており、円はオーバーラップのサイズ(図のオフセット)に従って問題の線から垂直に投影されます。 速度はVerlet統合により暗黙的であるため、位置を変更すると速度も変更されます。私が知る必要があるのは、円の摩擦の量を何らかの方法で決定し、速度を下げるために円と平行に後方に移動することです。

2
楕円軌道モデリング
私は単純な2Dゲームで軌道で遊んでいます。このゲームでは、船が宇宙空間を飛び回り、巨大なものに引き付けられます。船の速度はベクトルに保存され、ニュートンの万有引力の法則を考慮して、必要に応じてフレームごとに加速度が適用されます。点の質量は移動しないので(現在は1つしかありません)、楕円軌道を期待します。 代わりに、私はこれを見ます: 私はほぼ円形の軌道で試してみましたが、質量を大幅に(100万倍)異ならせようとしましたが、常にこの回転軌道を取得しています。 コンテキスト用の(D)コードを次に示します。 void accelerate(Vector delta) { velocity = velocity + delta; // Velocity is a member of the ship class. } // This function is called every frame with the fixed mass. It's a // method of the ship's. void fall(Well well) { // f=(m1 * m2)/(r**2) // …

1
車両の微分プログラミング
私の車の中で、内側のタイヤが外側のタイヤよりも速く動いているので、高速で曲がるときに、車が奇妙に振る舞うところです。だから私は差動でプログラムする方法を理解する必要がありますが、私はそれを正しく機能させることができないようですので、私は誰かがこれについての経験があるかどうかを確認するためにここにいます。 オンラインで物理を確認しましたが、ゲームで提供できる情報よりも多くの情報が考慮されているようです(車両への実際の重力の影響など)。現在、私は次のロジックを使用して、差動ホイール速度を決定しています。わかりやすく説明するように心がけますので、わかりにくい場合やわかりにくい場合は、お詫びいたします。 これが私がすることです: 私は現在のターンの度合いを最大ターン量で割ってパーセンテージを取得し、そのパーセンテージを取り、それをモディファイアパーセンテージに適用しますエンジンの速度?速度?)次に、私のディファレンシャルで、車両が左または右に曲がっているかどうかを確認し、片側の速度をx%減らし、反対側の速度を同じx%増やします 私の最大の問題は、私がターンの割合を減らすために補っている数であると確信していますが、そこに何を置くべきかわかりません。ターン%をディファレンシャル(40%など)に直接渡すと、片側が40減少し、もう一方が40増加することを知っています。これは明らかに正しくありません。 エンジン速度、トランスミッション、各車輪の車軸速度、トルク、車両速度などにアクセスできますが、この式を実行するときにこれらのどれを考慮に入れるべきかわかりません。 多分それを複雑にしすぎているのかもしれませんし、多分それを単純化しすぎているのかもしれません。これを理解するための助けがあればすばらしいでしょう!

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

1
アンリアルのようなエンジンはOpenGLやDirectXとどのように関係していますか?
私はコンピュータグラフィックスにまったく不慣れであり、さらにゲーム開発にも不慣れです。基本を素早く学ぶための情報を探しています。頭の中に一つ質問があります。Crytek EngineやUnreal Engineなどのエンジンは、OpenGLまたはDirectXとどのように関連していますか? 私はゲームの物理学に非常に興味がありますが、物理学、グラフィックス、およびエンジンがどのように組み合わされているのかわかりません。埋められないギャップがあります。

2
どうすればスペースシムに勢いを盛り込むことができますか?
私は今、単純な2D物理エンジンの作成に取り組んでおり、勢いを宇宙船の動きに組み込む方法を理解するのにいくつかの問題に直面しています。 特定の方向に特定の速度で移動している場合、現在、船の位置を簡単に更新できます(位置+ =方向*速度)。しかし、船がまったく回転し、(船が向いている新しい角度に基づいて)方向を再計算し、その方向に加速する場合、船が移動する「線」を変更するために勢いをどのように考慮することができますか?現在、船は瞬間的に方向を変え、推力ボタンを押すと現在の速度でその新しい方向に進みます。船自体にある程度の質量があるような印象を与えるために、より緩やかな旋回動作にしたい。 このトピックに関する素晴らしい投稿がすでにある場合は申し訳ありませんが、検索で何も見つかりませんでした。さらに情報が必要な場合はお知らせください。質量*速度をゲームループの更新にスローする方法を誰かに簡単に教えてもらえれば幸いです。
8 xna  2d  physics 

1
車両の予測軌道?
私が開発しているゲームでは、この例では速度Vで北上している車両(1)が目標(2)に到達できるかどうかを計算する必要があります。例は上から問題を描写しています: 実際には2つのシナリオが考えられます。Vが一定である(結果として軌道4、円弧)、または車両に加速/減速する能力がある(軌道3、らせん弧)。 車両が(行き過ぎるのではなく)目標に到達できるかどうかを簡単に確認できる方法があるかどうか知りたい。私が考えることができる唯一のことは、時間の経過に伴う車両の位置を統合することなので、私は特に軌道#3に興味があります。 編集:もちろん、車両には常に操縦する能力がありますが、操縦半径はその速度に応じて変化します(最大横g力と考えてください)。 EDIT2:(実生活のほとんどの車両と同様に)ゲーム内のものにも最小ステアリング半径があることにも注意してください)。

1
OpenGL対物理学?
私はゲームプログラミングに非常に慣れていないため、最初のプロジェクトに参加しています。私は専門家の助言が必要になるようになりました: ゲームの物理演算がオブジェクトを操作できるようにするには、3D空間での各オブジェクトの位置と方向を知る必要があります。シミュレーションの一部として、オブジェクトによる移動(位置の変更)および方向の変更(回転)。 これは、回転と平行移動の計算が2回行われることを意味しますか?物理学の1つともう1つは、オブジェクトを描画する前にglTranslateとglRotateを使用して行われますか? IMOこれは起こらないはずです。また、物理部分で平行移動と回転を計算すると、GPUではなくCPUが使用され、パフォーマンスに影響します。 これは専門家によってどのように行われ、そのような状況を処理するための効率的なゲームアーキテクチャについてどのようなアドバイスをしますか?
8 opengl  physics 

1
プラットフォーマーで動くプラットフォームの物理をどのように扱うのですか?
したがって、インターネットで数時間検索した後も、2Dプラットフォームゲームで移動するプラットフォームを処理する方法について、満足のいく答えが見つかりません。そこで、垂直方向と水平方向に動く2つの異なるプラットフォームを操作する単純なプロトタイプを作成することにしました。何が機能しておらず、どのように修正するのかを分析して確認するための助けが欲しいです。以下の.flaファイルと.asファイルを、再生可能な.swfへのリンクと共に提出しました。 目標は、ヒーローがプラットフォームの上に立って、一緒に押したり、ジャンプしたり、下にジャンプしたりできる固体のオブジェクトであるかのようにプラットフォームと相互作用することです。 私のプロトタイプの問題はこれらです: 水平に動くプラットフォーム上に立って、移動せずに(キーに触れずに)、ヒーローはプラットフォームに沿って移動しますが、少し遅れてヒーローが少し後退します。 水平方向に動くプラットフォームの上に立ってジャンプすると、空中のプラットフォームに沿って動きます(一部のゲームはこのようにすることを好みますが、自然に感じられず、ここでは望まれません)。これは、ヒーローがプラットフォームからX軸の速度を保持していることが原因である可能性があります。 垂直方向に移動するプラットフォームの底部にジャンプするとき、プラットフォームが下に移動しているときに、プラットフォームの中に少し沈みます。主人公は一瞬衝突がなかったかのように貫通します。 垂直方向に移動するプラットフォームにジャンプすると、Y軸の速度が保持されるため、プラットフォームから降りると、より高速で落下します。保持された速度の速度で、+重力が追加されます(これは主に、プレイヤーが空中で凍結せずにプラットフォームに着地したときに、Y軸の速度を0にリセットする方法を理解できないためです)。 私は初心者のプログラマーなので、これを行うためのより良い方法があると確信しています。それらをすべて聞いてみたいと思います。タイルベースのゲームに移動プラットフォームを実装できるコードやその他の方法を改善する方法についてのアイデアは大歓迎です。結局、私は2Dプラットフォーマーで動くプラットフォームを処理するための確かな方法を見つけようとしています。 再生可能なSWF:http : //dl.dropbox.com/u/28271061/PlatformerhowtoFLA.html(矢印キーで移動、Xキーでジャンプ、Zキーで実行) ソースコードASファイル:http ://dl.dropbox.com/u/28271061/Platformerhowto.as SourcefileFLA:http : //dl.dropbox.com/u/28271061/PlatformerhowtoFLA.fla オンラインでパスティーを通してコードを読みたいだけなら:http : //pastie.org/2266764

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