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

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

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

1
衝突点を見つける
2D剛体シミュレータを書いています。シミュレートされるオブジェクトは凸状のポリゴンです。私の質問には、衝突の「ポイント」をどのように決定するかが含まれているため、応答力を適用すると、トルクも計算できます。 2Dでは、ナローフェーズコリジョン検出の一般的な方法は、分離軸定理のようです。ただし、これにより「衝突するのか」ということになります。「どれだけ?」と同様に、応答力を適用する(したがってトルクを計算する)基準点(私が知っている)は提供されません*。 もう1つの方法(これは3Dで使用されるため、これにも興味があります。これが論理的な次のステップになります)は、2つのポリゴンのミンコフスキー差を計算し、(0,0)が結果のポリゴンに含まれます。しかし、これをどのように使用して、応答力を適用する相対点を決定しますか?私の仮説は、この違いの各面はポリゴンの1つの面に事実上対応しているため、分離距離は(0,0)からMDまでの最短距離であり、これをポリゴンの対応する面に適用するとします。 。 おまけとして、3Dでこれをどのように行うのですか? *これを書いているときに、SATを使用するときに、どのポイントが重複しているかを追跡し、それらのポイントの「平均」で力を適用できることに気づきました。しかし、私はこの小さなトリックを実行するためにいくつかの非分離軸のどれを決定する必要があります...

3
ケプラー軌道:時間の経過とともに軌道上の位置を取得
スペースシミュレーション関連のゲームを開発しています。次のように、バイナリスターの動きを実装するのに問題があります。 2つの星は重心を周回し、軌道は楕円形です。 基本的に、任意の位置での角速度を決定する方法は知っていますが、経時的な角速度は知りません。したがって、与えられた角度で、星の位置を非常に簡単に計算できます(http://en.wikipedia.org/wiki/Orbit_equationを参照)。 時間をかけて星の位置を取得したいと思います。楕円のパラメトリック方程式は機能しますが、正しい速度が得られません { X(t) = a×cos(t) ; Y(t) = b×sin(t) }。 それは可能ですか、どのように行うことができますか?

6
生きている生き物のラグドール:誰かがすでにそれを実装していますか?
死んだ生き物が現実的に落下するのは退屈だと思います。 筋肉の力と手足の速度に応じてモデルが動くアニメーションシステムを実装したゲームはありますか? ロードされて順次読み取られるだけの確定したアニメーションデータを使用する方がはるかに高速ですが、非常に「静的」に見えます。 手続き型の生成データについてよく耳にするので、骨の重さに応じて独自のアニメーションでボディを生成できます。 骨が立っている実際のロボットシミュレーションについて話しているのではなく、バランスを保つためにいくつかの角度を自動調整していますが、より中間的でより事前に計算されたものについてです。 力はステップ間でわずかに異なります(フロート上でランダムに変化するため、プラスまたはマイナス10%で変化します)。そのため、四肢の軌道はステップ間で異なります。 多くの調整と事前設定が必要になりますが、確定性ははるかに低くなります。

1
衝突のために2Dビットマップ(地形に使用)を2Dポリゴンメッシュに変換するにはどうすればよいですか?
だから私は、破壊可能な地形などの通常のすべてのものを備えたワームに似た大砲タイプのゲームを作っています...そして、私に衝突法線やそのようなものを与えないピクセルごとの衝突を使うことができましたが。すべてをメッシュに変換することは、既存の物理ライブラリを使用できることも意味します。これは、自分で作成できるものよりも優れています。 私は、マーチングスクエアを使用してビットマップの輪郭を取得することでこれを行うと人々が言及しているのを見てきましたが、これらをメッシュに変換する方法については何も見つかりません(異なる高さを定義する輪郭線を持つ3Dメッシュを参照する場合を除き、これは私が望むものではありません)。現時点では、次のような基本的なマーチングスクエアの輪郭を取得できます(背景のグリッドのような線がマーチングスクエアの「セル」になります)。 よりスムーズで正確な結果を得るには、補間する必要がありますが、それが一般的な考え方です。これをメッシュに変換する方法についていくつかのアイデアがありましたが、それらの多くは特定の状況で機能しない可能性があり、完全に機能すると考えていたものは非常に遅く、仕上げさえしていませんまだ!理想的には、私が最終的に使用するものはどれも、急速に発射する武器や掘削ツールなどのケースですべてのフレームを実行するのに十分な速さである必要があります。 このようなものをメッシュに変換するための何らかの既存のアルゴリズム/テクニックがあるに違いないと思いますが、何も見つからないようです。Delaunay Triangulationのようなものを見てきましたが、私が知る限りでは、上記の例のように凹型の形状を正しく処理できず、地形内の穴も考慮されません。 比較のために思いついたテクニックを調べて、誰かがより良いアイデアを持っているかどうかを確認すると思います。まず最初に、マーチングスクエアの等高線を補間し、線の端から頂点を作成し、線がセルのエッジと交差する場所の頂点を取得します(重要)。次に、頂点を含む各セルについて、2つの頂点を使用してポリゴンを作成し、セルのコーナーを3番目の頂点(おそらく最も近いコーナー)として作成します。 各セルに対してこれを行うと、元のビットマップを正確に表すメッシュが必要になると思います(ビットマップの端にあるのはポリゴンだけで、その間にある大きな領域は空になります)。これに関する唯一の問題は、最初のマーチングスクエアですべてのピクセルを1回ループし、次にすべてのセル(画像の高さ+ 1 x画像の幅+ 1)を少なくとも2回ループすることです。画像...

5
動くシューターから動くターゲットを導く方法
私はこの質問を見ました:オブジェクトをそのターゲットに導くために敵の位置を予測しました。私の状況は少し異なりますが。 ターゲットが動き、射手が動きます。また、シューターの速度は弾丸の速度に追加されます。つまり、右にスライドしている間に発射された弾丸は、右に向かうほど大きな速度になります。 私がやろうとしていることは、敵に、プレイヤーを攻撃するために撃つ必要がある場所を決定させることです。リンクされたSOソリューションを使用すると、プレイヤーと敵が静止していない限り、速度の違いによりミスが発生します。どうすればそれを防ぐことができますか? スタックオーバーフローの回答から提示されたソリューションは次のとおりです。要約すると、次の形式の2次方程式を解くことになります。 a * sqr(x) + b * x + c == 0 sqr平方根ではなく平方を意味することに注意してください。次の値を使用します。 a := sqr(target.velocityX) + sqr(target.velocityY) - sqr(projectile_speed) b := 2 * (target.velocityX * (target.startX - cannon.X) + target.velocityY * (target.startY - cannon.Y)) c := sqr(target.startX - cannon.X) + sqr(target.startY - cannon.Y) 次に、判別式を調べて、可能な解決策があるかどうかを判断します。 disc := …
7 c++  ai  physics  aiming 

1
流体シミュレータの移流プログラムの奇妙な問題
2D流体シミュレータを実装しました。ソルバーは完全にGPUで実行されます。すべて正常に動作します...私の仕事用PCで。しかし、自宅のPCではひどい不具合があり、それらを修正する方法を理解できません。経験的に、問題がadvectプログラムのどこかにローカライズされていることを発見しました。これは、私がビデオを統合した仕事で、そして自宅で— NVIDIA GeForce 9800 GTは非常に奇妙な原因です。次に、advectプログラムのGLSLソースを示します(明確にするために一部の行が省略されています)。 #version 130 out vec3 value; uniform sampler2D q; uniform sampler2D velocity; uniform float dt; uniform float inverseSize; void main() { vec2 p = gl_FragCoord.xy * inverseSize; vec2 np = p - dt * texture(velocity, p).xy; value = texture(q, np).xyz; } そしていくつかのスクリーンショット。 仕事用PC: 自宅のPC:
7 opengl  physics  glsl 

1
2Dトップダウンレーサーで横向きの摩擦を作成する
私はある種のトップダウンレーサーを作成しようと遊んでいますが、車を適切に方向転換させるのに問題があります。現時点では、これは車の位置を更新するために必要なコードです。 var power; if (keyboard.upKeyDown) { power = 1; } else { power = 0; } if (keyboard.leftKeyDown) { this.rotate -= 0.05; } else if (this.keyboard.rightKeyDown) { this.rotate+= 0.05; } this.velocityX += Math.cos(this.rotate) * power; this.velocityY += Math.sin(this.rotate) * power; var cDrag = 0.98; this.velocityX *= cDrag; this.velocityY *= cDrag; …
7 2d  physics 

1
重力により地面から跳ね返るキャラクター
ゲームに重力を実装すると、キャラクターが地面にぶつかったときにキャラクターがわずかに上下にバウンドし続けます。デバッグすると、キャラクターは基本的に地面の上と外でバウンドします。この問題を解決する方法がわからない場合は、ここで助けていただければ幸いです。 定数値 private float gravity = 0.09f; キャラクターが地面にいる場合は速度に追加 if (!isOnGround) velocity.Y += gravity; キャラクター全体の速度を全体の位置に追加します。 position += velocity * (float)gameTime.ElapsedGameTime.TotalSeconds; キャラクターが地面にあるかどうかを決定する衝突方法の一部。 for (int y = topTile; y <= bottomTile; ++y) { for (int x = leftTile; x <= rightTile; ++x) { // If this tile is collidable, TileCollision collision = Level.GetCollision(x, …
7 xna  physics 

3
現実的な2Dレーシングカーの物理学の既存の良い出発点はありますか?
私は2Dトップダウンゲームに現実的な動作のレーシングカーを取り入れようとしています。 運転する非常にシンプルな車を作るのは簡単ですが、ニュートンの法則と車に働く力をうまくモデル化し、何か素晴らしいものを生み出す、かなり洗練されたモデルが必要です。 私はこれを行う方法についての良いチュートリアルをウェブで検索しましたが、そこには多くのサンプルコードはないようです。 私はこのチュートリアルhttp://www.gamedev.net/topic/470497-2d-car-physics-tutorial/に従いました。これは非常に優れており、良い出発点のように見えますが、含まれているデモで遊んだ場合、あなたは見ることができますそれはまだその説得力のあるレーシングカーの前に行く公正な方法を持っています。 Unityのようないくつかの3Dゲームエンジンには、すぐに使える優れた車両モデルが付属していると聞きました。2Dにそのようなものはありますか? 自分自身をゼロから構築するために必要なすべての正しい力などを読んで理解する前に、多くの時間を費やす前に、私が知らない既存の素晴らしい2D開始点を見逃していないことを確認したいだけです。 この記事では、必要なものがすべて説明されているようです:http : //www.asawicki.info/Mirror/Car%20Physics%20for%20Games/Car%20Physics%20for%20Games.htmlしかし、残念ながらソースコードのリンクは壊れています。
7 xna  2d  physics  racing 

2
速度から角度方向を計算する
発射体の角度方向を計算しようとしています。XとYの速度であるため、その動きの大きさを見つけることができますが、その角度方向(ラジアン)を取得することに頭を悩ませています動いている... 私はそこにあると仮定しtanたりsin、関係が、私はそうでない場合はビット無知です...

3
惑星の3Dゲーム[終了]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 2年前休業。 平面ではなく惑星で3Dゲームを作成するのは、もっと大変なことでしょうか?どのエンジンがこれをサポートし、どのテクニックを使用しますか? 例としては、プレイヤーが歩き回って、開始した場所に戻ることができる小さな球体があります。
7 physics  3d 

5
この単純な衝突ソルバーでオブジェクトが貫通するのはなぜですか?
以下のコードは、ここの Microsoft XNAサンプルからのものです。これは非常に単純なリジッドボディシミュレーションであり、多くの物理的効果(角運動量など)を無視しますが、オブジェクト(球)を押しのけて、互いに貫通しないようにします。 ただし、シミュレーションでは球体が貫通するだけでなく、多数の球体が相互に積み重ねられている場合、小さな球体が大きな球体の内側にほぼ完全に収まります。すべての球が同じ半径と質量を持つようにすると、シミュレーションは適度に実行されます(最小の相互浸透で)。 誰かが相互浸透がある理由を説明できますか?球の位置を移動させるので、相互侵入は不可能のようです。 シミュレーションの各球について、このメソッドは他のすべての球で呼び出されます。 /// <summary> // Given 2 spheres with velocity, mass and size, evaluate whether // a collision occured, and if so, excatly where, and move sphere 2 // at the contact point with sphere 1, and generate new velocities. /// </summary> private void SphereCollisionImplicit(Sphere sphere1, …

2
box2dを使用して鳥が飛ぶようにする方法
私はBox2Dを初めて使用し、重力を10に設定しました。重力が10の場合でも、オブジェクトを空間で飛行させる方法を教えてください。オブジェクトを飛行させるために設定する必要があるプロパティは何ですか?別のアプローチはありますか?

1
柔らかい体、どこから学習を始めますか?
ソフトボディのシミュレーションを学ぶためのリソースについてお聞きしたいのですが、いくつかの優れた知識源を知っていますか? 自動車事故シミュレータを作りたいと思って何かを作りましたがうまくいきませんでした。:/

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