問題タブ [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.
silverlight - ポリゴンの衝突検出
これは衝突検出に関する一般的な質問ではないので、最後まで読んでください。
私の wp7 ゲームでは、すべてのオブジェクトを四角形として表し、Intersect() メソッドを使用して 2 つの四角形間の衝突をチェックします。
オブジェクトを長方形ではなく多角形として描画することで精度を高めようと考えていました。
Polygons で機能する Rect.Intersect() などの組み込み API はありますか?
より一般的な質問: .net API を利用し、衝突検出アルゴリズムの実装を含まないRect.Intersect() 以外のより良いアプローチはありますか?
java-me - マーブル迷路ゲーム関連
j2me で大理石の迷路ゲームのプロジェクトに取り組んでいます。ボールの動きと制御に関する問題に直面しています。
私が使用しているコードは
ここで私が直面している問題は、たとえば速度を下げる場合です:-書くballx+=4;ballY+=4 OR ballx-=4;ballY-=4
ことで、ボールをコントロールできます
スピードを 10 に保つと、ボールをコントロールできなくなります。要するに、私はスピードまたはコントロールの 1 つだけを得ることができます。
でもスピードもコントロールも両方やりたい。
animation - ゲームに表示された 2D ボーン アニメーションを実装する方法を誰が知っていますか?
彼らはどのようにしてフラッシュゲームにボーンアニメーションを実装するのだろうかhttp://www.foddy.net/athletics.swf 私が 2D ボーンシステムを学び始めることができる教材を知っていますか? 各フレームに複数のビットマップを作成することでアバター システムを実装しましたが (メイプル ストーリーと同様)、ボーン システムを使用するとより多くのアート リソースを節約できると言う人もいるので、それについて学びたいと思います。
android - 2D線分である傾斜した壁または傾斜した壁との衝突後の移動するボールの角度を計算します
たとえば、境界壁として機能する4つの線分で構成される2Dポリゴン内に「ボール」がある場合、不規則に傾斜した壁との衝突後のボールの角度をどのように計算しますか?
壁が水平、垂直、または45度の角度の場合にボールをバウンドさせる方法を知っています。また、壁との衝突を検出するためのコード設定もあります。
ドット積と法線について読んだことがありますが、Java/Androidでこれらを実装する方法がわかりません。私は完全に困惑していて、Googleで10ページすべてを10回調べたような気がします。私はこれを理解しようとして燃え尽きています、誰かが助けてくれることを願っています。
graphics - 2D プラットフォーマー: 物理をフレームレートに依存させるのはなぜですか?
「スーパー ミート ボーイ」は、最近 PC 向けに登場した難しいプラットフォーマーで、優れたコントロールとピクセル パーフェクトなジャンプが必要です。ゲーム内の物理コードはフレームレートに依存しており、フレームレートは 60fps に固定されています。これは、コンピューターがゲームをフルスピードで実行できない場合、物理学が異常になり、(とりわけ) キャラクターの実行が遅くなり、地面から落ちることを意味します。さらに、vsync がオフの場合、ゲームは非常に高速に実行されます。
2D ゲーム プログラミングの経験者は、ゲームがこのようにコーディングされた理由を説明できますか? 一定の速度で実行される物理ループは、より良い解決策ではないでしょうか? (実際には、一部のエンティティはフレームレートに関係なく正常に動き続けるため、ゲームの一部に物理ループが使用されていると思います。一方、あなたのキャラクターは正確に [fps/60] の速さで実行されます。)
この実装で気になるのは、モニター、グラフィック カード、CPU などのシステム固有のものに依存する、ゲーム エンジンとグラフィック レンダリングの間の抽象化が失われていることです。何らかの理由で、コンピューターが vsync を処理できない場合、または正確に 60 fps でゲームを実行できない場合、コンピューターは見事に壊れます。レンダリングステップが何らかの形で物理計算に影響を与えるのはなぜですか? (最近のほとんどのゲームは、ゲームを遅くするか、フレームをスキップします。) 一方、NES と SNES の古い学校のプラットフォーマーは、制御と物理の多くを固定フレームレートに依存していたことを理解しています。これはなぜですか? フレームレートに依存せずに、その流れでパトフォーマーを作成することは可能でしょうか? グラフィックス レンダリングをエンジンの残りの部分から切り離すと、必然的に精度が失われますか?
ありがとうございます。質問がわかりにくかったら申し訳ありません。
math - 3Dルームの2つのカーブの衝突点
私はかなり長い間小さなゲームをプログラミングしています。学校のプロジェクト内で小さなFPSシューティングゲームのコーディングを開始し、directXの使用を少し体験しました。理由はわかりませんが、プロジェクトを止めることができず、自宅でもプログラミングを始めました。現在、私はいくつかの小さなAIを作成しようとしています。それは間違いなく簡単ではありませんが、とにかくそれが私の個人的な目標です。トピックは、複数の本を完全に埋めることができます。これまでのところ、ボットのウォーキング部分は完了しています。彼らは走り書きの道を歩きます。私はボットの「狙い」に取り組んでいません。私がいくつかの数学の問題にぶつかったプログラミング中に、私はまだ解決できませんでした。これについてのご意見が、私がさらに前進するのに役立つことを願っています。コンセプト、アイデア、その他すべてが高く評価されています。
問題:発射体のカーブ(重力、速度に依存)が敵の歩行経路のカーブ(速度に依存)に当たる位置(D3DXVECTOR3)を計算します。敵は一定の列を歩いていると仮定します。
既知の変数:
可変定義
私の試み:ウィキペディアで「ドロップ」(重力に基づく発射体のドロップ)を計算するための公式を見つけました:
発射体の速度には、水平部分と垂直部分があります。ウィキペディアでもその公式を見つけました。
だから私はこれが発射体の曲線に当てはまると思います:
ターゲットは一定の速度で歩くので、次のようにして彼のカーブを決定できます。
今、私は続行する方法がわかりません。どういうわけか影響を与える時間を確保するために、どうにかしてそれを解決する必要があります。基本的な処方者として、私は次のものを使用できます。
しかし、それは線形の「軌道」を想定しているので、それは本当に正しくありません。ロケットを使用すると、この動作がわかります。
可能な限り問題を説明できたと思います。ご不明な点がございましたら、お気軽にお問い合わせください。
ドイツからの挨拶、フランク
編集:
主な問題は、衝突が発生するまでの時間がないため、衝突時の敵の位置を計算できないことです。一方、衝突時の敵の位置を知らずに時間を計算することはできません。たぶん、反復法がこれを解決します。
カーブの敵:
カーブ発射体:pos(t).y = pos(0).y + sin(theta)*速度+0.5*重力*時間*時間
pos(t).xとpos(t).zは、(xとz)で計算する方法がわからないため、基本的に順方向を定義します。xだけではありません。
時間を知らずに敵を計算することはできません..そして、角度(シータ、ピッチ/ヨー)と「将来の」衝突点までの距離を知らずに時間を計算することはできません
algorithm - ゲームの移動アルゴリズム
現在、COD4でマップのスクリプトを開発しています。問題はこの状況のアルゴリズムにあるので、言語は非常に単純なので、これを言語に依存しないものとしてタグ付けしていると思います。
幅960戸の部屋があります。そしてその中には真ん中にオブジェクトがあり、それを軸として数えます。ボールは、打たれるたびにランダムな位置に移動することになっていますが、壁を超えて移動することはできません。これが図です:
ゲームのAPIは、私が知る限り、オブジェクトの相対的な位置の移動のみを許可しているので、私が思いついたコードを次に示します。問題は、head_move()を2回呼び出した後、予期しない結果が発生し始め、これが私の頭をクラッシュさせることです。誰かが私を助けてくれますか?
motionThink():
編集: 明確にするために。ユーザーがボールを撃つと、その位置が特定の値に変わります。ここで、彼がもう一度ヒットした場合、ランダムintジェネレーターの最小値と最大値を変更して、ボールが壁の外に移動しないようにする必要があります。例:
- レベルが始まります。ボールは部屋の真ん中にあります。最小範囲と最大範囲はそれぞれ-480と480です
- ユーザーがボールを打ち、そのボールが-200ユニット(左に200ユニット)移動しました。
- これで、最小範囲と最大範囲は-280と680になります。
これが十分に明確であることを願っています。
編集2: FlipScriptが提案したようにサインを編集しました。log2screen関数からの出力は、実際に何が起こっているかです。
- 最小:-480および最大480。移動67
- 最小:-413および最大547。移動236
- 最小:-244および最大716。移動461
単なるサンプルケース。何かが逆行していると私は信じています。これらは正しい計算ではありません。
c++ - Box2d 衝突。オブジェクトが変形する
Box2d を使用するアプリを開発しています。私はいくつかのブロックとそれらと衝突するオブジェクトを持つ世界を持っています。衝突が始まった瞬間、オブジェクトは形状を変え始め、より大きくなります。何が原因である可能性があります。
私は体を固定位置と睡眠状態で作成しています。また、shapeDef->friction = 0.8f; shapeDef->density = 1.0f; shapeDef->restitution = 0.2f;
適切な物理パラメータを使用していない可能性があります。その変形は必要ありません。動きと体が元の形を保っているだけです。
c - 単純な再帰のヘルプ
高さ 1:高さ 2 の比率 0.98 を使用して、単純な振り子のスイング減衰を計算する単純な再帰関数があります。
この関数の基本ケースは 0.0 ですが、何らかの理由で無限の自己呼び出しになります!
誰かが私が欠けているものを見つけることができますか?
コード:
mIL3S www.milkdrinkingcow.com
algorithm - KDTree分割
私は現在、物理エンジン(趣味のプロジェクト)用のKDTreeを書いています。
KDTreeにはポイントが含まれていません。代わりに、環境内のさまざまなオブジェクトをバインドするAxisAlignedバウンディングボックスが含まれています。
私の問題は、KDTreeノードがいっぱいになったときに分割する方法を決定することです。私は2つの方法を試しています:
方法1:ノードを常に最大軸上で正確に半分に分割します。
- これには、かなり等間隔に配置されたツリーという利点があります。
- 大きな欠点:オブジェクトがノードの小さな領域に集中している場合、冗長なサブディビジョンが作成されます。これは、すべてのボリュームが正確に半分に分割されているためです。
方法2:オブジェクトを含むノードの領域を見つけます。最大軸上でその領域を半分に分割する平面上でノードを分割します。例-すべてのオブジェクトがノードの下部に集中している場合、オブジェクトは縦方向に分割され、それによって下部が2つに分割されます。
- これにより、上記の方法の問題が解決します
- 同じ平面上に存在するもの(たとえば地形)にインデックスを付けると、長くて狭いノードが作成されます。同じ平面上にない他のオブジェクトを後で追加する場合、これらの細長いノードは非常に貧弱なインデックスを提供します。
したがって、ここで探しているのは、KDツリーノードを分割するためのより良い方法です。これが物理エンジンになることを考えると、決定はリアルタイムで行われるのに十分単純である必要があります。