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

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

3
衝撃ジャンプ
私を困惑させていることが1つあります。それは、プラットフォーマーで「フェイクインパルス」ジャンプを実装する方法です。私が何を話しているのかわからない場合は、マリオ、カービー、Cave Storyからの引用のジャンプを考えてください。彼らの共通点は何がありますか?さて、ジャンプの高さは、ジャンプボタンを押し続けている時間によって決まります。 これらのキャラクターの「インパルス」は、実際の物理学のようにジャンプする前ではなく、空中で構築されていることを知っています-つまり、最大高さの途中で指を非常にうまく持ち上げることができ、それとフルストップの間の減速。ホップをタップして長押しするだけでいいのは、そのためです。彼らが軌道をアークとして保持していることに魅了されます。 私の現在の実装は次のように機能します: ジャンプボタンを押している間、重力はオフになり、アバターのY座標は重力の一定値だけ減少します。たとえば、物がティックごとにZ単位で落ちる場合、ティックごとにZ単位上昇します。 ボタンを放すか、制限に達すると、アバターは、速度が0に達するまでXユニットをカバーする量で減速します。一度、速度が重力に一致するまで加速します-例に固執すると、Xユニットをカバーしながら0からZユニット/ティックまで加速すると言えます。 ただし、この実装では、ジャンプが対角線になりすぎ、アバターの速度が重力よりも速くない限り、現在のプロジェクトでは速度が速すぎます(ティックごとに約4ピクセルで移動し、重力はティックごとに10ピクセルです) 40FPSのフレームレート)、水平よりも垂直になります。プラットフォーマーに精通している人は、ゲームの重力ほど速くなくても、キャラクターのアークジャンプはほとんど常に彼らがさらにジャンプすることを可能にし、それが正しくプレイされない場合、それ自体が証明されることに気付くでしょう非常に直感に反します。私の実装が非常に迷惑であることを証明できたので、私はこれを知っています。 誰かが同様のメカニズムを試したことはありますか?この種のプラットフォーマージャンプの背後にあるものを知りたいです。事前にこれを経験したことがなく、試してみたい場合は、説明された実装を修正または強化しようとしないでください、私が正しい方法でなかった場合-から解決策を作ってみてくださいスクラッチ。これらの擬似インパルスがどのように機能するかを示している限り、重力、物理学、その他を使用するかどうかは気にしません。 また、言語固有のコーディングを避けるためにそのプレゼンテーションが欲しいです。たとえば、C ++の例を共有したり、Delphiを使用したりします。プロジェクトにXNAフレームワークを使用していて、C#のことを気にしない限り、他のコードを読むのに忍耐はありません。他の言語の特定のゲーム開発者はここで達成することに興味があるので、擬似コードにこだわる必要はありません。 よろしくお願いします。

2
物理学によるマルチプレイヤーネットワーキング
私は、物理学を使用したマルチプレイヤーネットワーキングがレーシングゲームでどのように実装されているのか興味があります。私たちは、異なる人々によって制御される複数の高速移動車両で物理的な世界を持っています。車両には武器があり、互いに射撃できるとしましょう(ツイストメタル、Vigilante v8) ヒットとコリジョンが心配です。権限のあるサーバーまたはより良い代替手段?

6
Ball Physics:ボールが止まったときに最終的な跳ね返りを滑らかにする
私は小さなバウンドするボールゲームで別の問題に直面しました。 ボールが止まりそうな最後の瞬間を除いて、ボールはうまく跳ね返ります。ボールの動きは主要部分では滑らかですが、最後に向かって、画面の下部に落ち着くとしばらくボールが動きます。 なぜこれが起こっているのかは理解できますが、それをスムーズにすることはできません。 提供できるアドバイスに感謝します。 私の更新コードは次のとおりです。 public void Update() { // Apply gravity if we're not already on the ground if(Position.Y < GraphicsViewport.Height - Texture.Height) { Velocity += Physics.Gravity.Force; } Velocity *= Physics.Air.Resistance; Position += Velocity; if (Position.X < 0 || Position.X > GraphicsViewport.Width - Texture.Width) { // We've hit a …
12 xna  c#  physics 

4
SATで連絡先を見つける
分離軸定理(SAT)により、最小平行移動ベクトル、つまり2つの衝突するオブジェクトを分離できる最短ベクトルを簡単に決定できます。ただし、必要なのは、貫通オブジェクトが移動しているベクトル(つまり、接触点)に沿ってオブジェクトを分離するベクトルです。 明確にするために絵を描きました。前から後の位置に移動する1つのボックスがあります。後の位置では、灰色のポリゴンと交差します。SATは、赤いベクトルであるMTVを簡単に返すことができます。青いベクトルを計算しようとしています。 私の現在のソリューションは、青いベクトルの長さが特定のしきい値に達するまで、前と後の位置の間でバイナリ検索を実行します。それは機能しますが、形状間の衝突をループごとに再計算する必要があるため、非常に高価な計算です。 接触点ベクトルを見つけるためのより簡単なおよび/またはより効率的な方法はありますか?

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


4
さまざまな補間式のアニメーションの例:リンク?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 たとえば、車をスムーズに停止したい場合など、非線形補間曲線とは異なる方程式を含む巨大なページへのリンクを見つけたことを覚えています。 これらは、物理エンジンの助けを借りずに実際の加速/速度の動作をエミュレートするのに役立つ場合があります。 このページの場所は?Googleに適切なキーワードを与えることができません... 編集:以前のラップトップブックマークを検索したところ、http://sol.gfxile.net/interpolation/が見つかりました。

1
物理学とゲームロジックをUIコードから分離する
私は単純なブロックベースのパズルゲームに取り組んでいます。 ゲームプレイは、ゲームエリア内を移動するブロックで構成されているため、簡単な物理シミュレーションです。しかし、私の実装では、理想とはほど遠いものであり、より良い方法についての指針を教えていただけませんか。 多くのパズルゲームで行ったように、ゲームロジックとUIの2つの領域にコードを分割しました。 ゲームロジックは、ゲームの一般的なルール(チェスの正式なルールシステムなど)を担当します。 UIはゲーム領域とピース(チェス盤やピースなど)を表示し、アニメーション(チェスの駒のアニメーションの動きなど)を担当します。 ゲームロジックは、ゲームの状態を論理グリッドとして表します。各ユニットは、グリッド上の1つのセルの幅/高さです。したがって、幅6のグリッドの場合、幅2のブロックを境界と衝突するまで4回移動できます。 UIはこのグリッドを取得し、論理サイズをピクセルサイズに変換して描画します(つまり、定数を乗算します)。ただし、ゲームにはゲームロジックがほとんどないため、ゲームロジックレイヤー[1]は、衝突検出以外にはあまり関係がありません。仕組みは次のとおりです。 プレイヤーがピースをドラッグし始めます UIは、ゲームロジックにそのピースの正当な移動領域を要求し、プレイヤーがその領域内でそれをドラッグできるようにします プレイヤーは駒を手放す UIはピースをグリッドにスナップします(そのため、有効な論理位置に配置されます) UIはゲームロジックに新しい論理的位置を伝えます(ミューテーターメソッドを使用します。 私はそれに満足していません: ゲームロジックレイヤーのユニットテストを作成していますが、UIは作成していません。UIにはトリッキーなコードがすべて含まれていることがわかりました。ピースが他の人や境界と衝突してグリッドにスナップするのを止めます。 UIがゲームロジックに新しい状態を通知するという事実が気に入らないのでmovePieceLeft()、他のゲームのようにメソッドまたはそのようなものを呼び出すようにしたいのですが、そのアプローチにはあまり向いていません。ゲームロジックは、UIで可能なドラッグとスナップについて何も知りません。 最善の方法は、ゲームロジックレイヤーを取り除き、代わりに物理レイヤーを実装することだと思います。それに関していくつか質問があります。 このような物理層は一般的ですか、それともゲームロジック層にこれを行わせるのがより一般的ですか? グリッドへのスナップおよびピースのドラッグコードは、UIまたは物理レイヤーに属しますか? そのような物理層は、通常、ピクセルサイズまたはゲームロジック層のような何らかの論理ユニットで動作しますか? ゲームのコードベースでイベントベースの衝突検出を見たことがあります。つまり、プレーヤーがピースをドラッグするだけで、UIがそれを素直にレンダリングして物理システムに通知し、物理システムがonCollision()メソッドを呼び出します。衝突が検出されると作品に。もっと一般的なものは何ですか?このアプローチまたは最初に法的運動領域を求めていますか? [1] レイヤーはおそらく私が言っていることの正しい言葉ではありませんが、サブシステムは誇張されており、各レイヤーは複数のクラスで構成されているため、クラスは誤解しています。

5
2Dプラットフォーマー:なぜ物理学をフレームレートに依存させるのですか?
「スーパーミートボーイ」は、最近PC用に登場した難しいプラットフォーマーであり、優れた制御とピクセル単位の完璧なジャンプが必要です。ゲーム内の物理コードはフレームレートに依存しており、60fpsにロックされています。これは、コンピューターがゲームをフルスピードで実行できない場合、物理現象が異常な状態になり、(特に)キャラクターの実行速度が遅くなり、地面に落ちてしまうことを意味します。さらに、vsyncがオフの場合、ゲームは非常に高速に実行されます。 2Dゲームプログラミングの経験者は、ゲームがこのようにコーディングされた理由を説明できますか?一定の速度で実行される物理ループは、より良い解決策ではありませんか?(実際には、一部のエンティティはフレームレートに関係なく正常に移動し続けるため、物理ループはゲームの一部に使用されると思います。一方、キャラクターは正確に[fps / 60]だけ正確に実行されます。) この実装で気になるのは、ゲームエンジンとグラフィックスレンダリングの間の抽象化が失われることです。これは、モニター、グラフィックスカード、CPUなどのシステム固有のものに依存します。何らかの理由でコンピューターがvsyncを処理できない場合、または正確に60fpsでゲームを実行できない場合、それは劇的に壊れます。レンダリングステップが物理計算に何らかの影響を与えるのはなぜですか?(最近のほとんどのゲームは、ゲームの速度を落とすか、フレームをスキップします。)一方、NESとSNESの昔ながらのプラットフォーマーは、制御と物理の多くを固定フレームレートに依存していることを理解しています。これはなぜですか、フレームレート依存性なしでその静脈にパフォーマーを作成することは可能でしょうか?グラフィックレンダリングを他のエンジンから分離すると、必ずしも精度が失われますか? 質問がわかりにくい場合は、ありがとうございます。
12 graphics  physics 

5
物理エンジンはいつ使用する必要がありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 閉じた2年前。 Box2Dを発見したので、非常に小さなプロトタイプや何かをテストする小さなプログラムから実際のプロジェクトまで、私が作成しようとするゲームのようなアプリケーションに使用しています。 そのおかげで、衝突から実際の物理学まで何でも簡単に処理できます。 しかし、時々、私はそれについていくつかの疑問を持っています:円またはAABBを処理するだけで、高度な物理ツール(ジョイントまたはそのようなもの)が必要ない場合、物理エンジンは、不要なオーバーヘッド。 私の質問を再確認するには:物理学が本当にシンプルなゲーム(たとえば、スーパーマリオなど)でBox2D(または他の物理エンジン)を使用しますか?そして、そうでない場合、なぜですか?
12 physics 

4
Box2Dボディのバウンディングボックスを取得
Box2Dでは、すでに世界で作成されたボディのバウンディングボックスを取得できるかどうか興味がありました。 したがって、基本的には、ボディは作成され、世界などと対話します。そして、そのBodyのバウンディングボックスが必要でした。出来ますか?
12 physics  box2d 

2
ゲームでの構造解析はどのように行われますか(例:橋梁建設、掘削または死滅、3D)?
すべてのコンポーネントがシステム全体に影響を与えるため、典型的なインタラクティブトラスシステムはかなりの計算が必要になると私は理解しています。シミュレーションの精度を犠牲にして、任意の反復回数で任意に停止できると思いますが、それがこれらのゲームで使用されているアプローチかどうかはわかりません(ブリッジビルディングゲームはトラスシステムの例です)。一方、DigやDieのようなゲームは、非常に複雑な構造システムを備えています。これは、トルク(私は信じています)と圧縮も考慮に入れており、非常に高速で、非常に広範なシステムで動作します。基本的な計算は似ていると思いますが、そうでない場合は両方のアプローチに興味があります。 これらがどのように作られるか知っていますか?それらには任意の制限がありますか、それとも完全に異なるアルゴリズムを使用していますか?また、皆さんが思いついたものはすべて3Dシステムに適用できると思いますが、そうでない場合、または明らかでない場合は、少なくとも2Dと3Dの両方に興味があるので、3Dにどのように使用できるかについて手がかりを教えてください。ゲーム。 ここでは感謝するつもりはありませんが、少なくとも前もってお礼を言うのは不公平だと思います。この段落が削除されないことを願っています。 編集:私が推測した場合、私はDigまたはDieが各ブロックのベクトルを格納し、シミュレーションの追加の精度がシステムの限界に対して意味がない点まで反復アルゴリズムを実行すると言います(たとえば、システムは大きすぎて、とにかく崩壊しない)ので、(アプリケーションに基づいているため)反復の半任意数によって制限されます。しかし、私は間違っている可能性があります。

2
レイキャストカーホイールが横にスライドしないようにするにはどうすればよいですか?
この記事を参考にして、非現実的な自動車物理エンジンを学習課題として書いてきました。 私は、地形に正しく衝突し、各車輪に正しいサスペンションフォースを適用する車を持っています。私の次の問題は、車輪の横方向の動きを防ぐことです。たとえば、斜面に車を落とすと、横に滑るようになり、横に滑るのを止めることはありません(いかなる摩擦もないため)。 リンクされた記事では、「サイドフォース」を適用し、フォワードフォースと組み合わせる必要があると記載されていますが、そのサイドフォースの計算方法については説明されていません。 各ホイールの衝突情報(交差法線など)と車の剛体に関する情報を考慮して、横向きの動きを防ぐために剛体に適用する適切なサイドフォースを計算するにはどうすればよいですか?

3
物理エンジンでオブジェクトの「飛び出し」やジッターを修正するにはどうすればよいですか?
速度を変更したりインパルスを適用したりするのではなく、重なり合うボディ(現時点では円のみ)の位置を直接修正することで衝突を解決する単純な物理エンジンを持っています。速度は、影響がすでに解決された後、または統合部分の間にのみ変更されます。 オブジェクトのヒープで、上位のオブジェクトがヒープの下部にあるオブジェクトに過度の圧力をかけている(これは暗黙的に存在し、アルゴリズムには圧力モデリングがない)という問題がありました。等 オブジェクトをy座標で並べ替えることでこれを修正したかったので、衝突はボトムアップで解決されました。しかし今、エンジンは実際に静止しているはずのオブジェクトの奇妙な飛び出し動作を示しています(gifを参照) ソースコードを提供するだけでなく、これは何でしょうか?

2
2Dプラットフォーマーでキャラクターを凹凸のある壁の上を歩くにはどうすればよいですか?
私は、横向きや逆さまなど、あらゆる角度で有機的な表面を「歩く」ことができるプレイアブルキャラクターを作りたいです。90度の角度の直線ではなく、傾斜したカーブしたフィーチャを持つ「オーガニック」レベル。 私は現在AS3(中程度のアマチュア経験)で作業しており、基本的な重力ベースの物理学にNape(かなり初心者)を使用しています。この歩行のメカニズムは明らかに例外です。 おそらくネープ拘束を使用して、この種の歩行のメカニズムを実行する手続き的な方法はありますか?または、レベルサーフェスの輪郭に沿って明確な歩行「パス」を作成し、それらを使用して歩行の動きを制限するのが最善でしょうか。

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