問題タブ [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.

0 投票する
2 に答える
315 参照

iphone - ゲーム開発における物理学のチュートリアルを見つけるのに最適な場所はどこですか?

私はゲーム開発(特にiPhone / iPad、それが重要な場合)に非常に慣れておらず、アニメーションの物理学の部分での作業に苦労しています。具体的には、いくつかのボール(円形のUIImageViewまたはCGサークル)に物理的特性(重力、重量、摩擦など)を与えようとしています。

ゲーム開発で物理学を始めるための本当に良いチュートリアルはありますか?物理的な動きのメカニズムは実際には変わらないため、チュートリアルの言語は実際には重要ではありません。

0 投票する
5 に答える
3496 参照

c# - C#での小惑星ゲームの動き

私はゲーム小惑星を作ろうとしています。私が今抱えている問題は、上矢印キーを押すと、「船」が10ピクセル上に移動することです。そして、左矢印キーを押すと、「船」が左に5度回転します。これは、左または右に曲がったときに発生する問題です。そして、上に移動してみてください。回転方向には動きません。回転した「船」をY方向に10度動かすだけです。

私が考えているのは、方向と呼ばれる変数を持つことです。この変数を360度の円と考えてください。私がやろうとしているのは、左矢印を押すたびに、方向から5を引くことです。これは、0から始まり、360から逆方向に進み、355に設定されます。次に、355を10で割ると、35.5になります。次に、10を35.5で割ると、.355になります。次に、10から.355を引きます(Yを上に移動します)。そしてそれを0から引きます(Xを左に移動します)。したがって、Yで9.645を上に移動し、Xで0.355を左に移動します。

私が抱えている問題は、私が持っている小惑星の「船」です。Graphics.FillPieは、開始角度と後退角度として使用するためにIntを必要としますが、ご覧のとおり、ダブルまたはフロートで作業する必要があります。私はこれを複雑にしすぎていると確信しており、100倍単純なものがあると確信しています。ブレゼンハムの線形アルゴリズムに沿って何かを考えています。誰かがもっと簡単なことや私の問題の修正を提案することで助けてくれるなら、それは大いにありがたいです。前もって感謝します。

0 投票する
4 に答える
4330 参照

algorithm - スライドする AABB の衝突 - エッジで動かなくなる

私は 3D タイル ベースのゲームに取り組んでおり、AABB 衝突検出を使用しています。プレイヤーが交差しているすべての立方体について、プレイヤーが立方体と最も交差していない軸を見つけ、その軸に沿って立方体からプレイヤーを押し出します。

キューブがチェックインされる順序によっては、複数のキューブの端に沿ってスライドするときに問題が発生する可能性があります。問題を説明する図を作成しました。

http://imgur.com/mmK0W.png

  • 矢印 #1 は、プレイヤーが試みた動きです。他の矢印は衝突応答です。
  • 左の図では、衝突は最初に右の立方体に対してテストされ、プレイヤーは左に押し出され、次に上に押し出されます。(悪い)
  • 右の図では、最初に左の立方体に対して衝突がテストされ、プレーヤーが押し上げられ、その時点でプレーヤーはもう一方の立方体と交差していません。(良い)

これを解決する最も効率的な方法についてのアイデアはありますか? または、衝突応答を処理するためのより良い方法はありますか?

ありがとうございました。

0 投票する
2 に答える
426 参照

c++ - C++ でのスプライトの座標の計算

C++ でスプライトの移動角度を計算しようとしています。

現時点では、コンソールを使用して結果を出力しているだけです。

私の問題は、結果がコンソールに表示されるときに、x 軸をマイナスの数値にできないことです。

残念ながら、私は基本的な三角法について学んだばかりなので、数学を間違っているだけなのかわかりません。

例: 角度を 270 に、速度を 1 に選択すると、(-1,0) になるはずだと思っていた新しい座標が (1,-1) としてコンソールに表示されます。

同様に、角度を -90 に、速度を 1 にすると、(0,-1) が得られます。

x がマイナスにならないだけですか?

それとも私は根本的な間違いを犯していますか?

私のコードは以下のとおりです。誰かが私が間違っていることを指摘できれば、それは大歓迎です。

0 投票する
1 に答える
921 参照

cocos2d-iphone - box2D で移動オブジェクトを静止オブジェクトに「くっつける」方法

iPhone 用の cocos2D 内で box2D サンプル プロジェクトを試してみましたが、移動オブジェクトが特定の方向に移動し終わったときに、移動オブジェクトを静止オブジェクトに「くっつける」ために使用するのに box2D が適切なエンジンであるかどうか疑問に思っています。

これが私が達成しようとしていることの単純化です: 十分な力が適用されると、重力に逆らって垂直に動く動的剛体であるMovingObjectがあります。MovingObject が移動すると、静的オブジェクトである StationaryObject と重なる場合があります。重力がMovingObjectの速度をゼロに下げて動かなくなった場合、MovingObjectがStationaryObjectと重なっている場合にのみ、MovingObjectをそのままにしておきたいと思います。オブジェクトが重なっていない場合、MovingObject は重力によって地面に向かって下に戻り始めます。その降下中、MovingObject が StationaryObject とオーバーラップする場合はいつでも、その降下を停止し、StationaryObject に引っかかっているかのようにその場所に留まる必要があります。

私が適用している力に従ってMovingObjectを移動させることはできますが、StationaryObjectと重なっていると仮定して、上昇の頂点に達したら停止してそこにとどまる方法がよくわかりません。

現在、単純な正方形/ボックス オブジェクトを試していますが、最終的には両方の MovingObject StationaryObject が非常に異なる複雑な多角形として定義される予定です。

これを達成するための洞察や提案を事前に感謝します。

0 投票する
1 に答える
224 参照

game-physics - 衝突からオブジェクトを投影する

趣味で2Dゲームを開発しています。分離軸メソッドを使用して実装された基本的な衝突検出がいくつかあります。2 つのオブジェクトが衝突する場合、そのうちの 1 つを、重なりが最も少ない軸に沿って衝突から外に投影します。

私が直面している問題は、オブジェクトがかなり速く動いているときに、オーバーラップが最小の軸が常に正しい方向であるとは限らないということです。私が持っている最良の例は、シミュレートされた重力によりオブジェクトが下に移動し(+ y軸に沿って)、「エッジ」に近い環境オブジェクトと衝突する場合です(崖の端など)。オブジェクトが十分に速く落下した場合、オーバーラップ量が最小の軸が x 軸になり、オブジェクトは x 軸に沿って横に押されます。

高速で移動するオブジェクトを処理するための最良の方法は何ですか? 落下するオブジェクトを少しずつ移動することを検討しましたが、これにより多くの余分なオーバーヘッドが追加されるようです。環境オブジェクトに、落下するオブジェクトを投影する軸の「優先」を与えることも検討しましたが、それは面倒でエラーが発生しやすいようです。

多くの余分なオーバーヘッドを追加せずにそれを行う方法はありますか?

0 投票する
2 に答える
8780 参照

2d - 二次元軌道物理学

ゲーム用の 2D 物理エンジンに取り組んでいます。単純な反復アプローチを使用して、重力と質量を機能させています (最終的にはアップグレードする必要があることがわかっています)。質量を手動で押して、それらが動くのを見ることができ、すべてが期待どおりに機能します。

現在、惑星の周りの単純な円軌道にある衛星を使用して、事前にゲームの世界を設定しようとしています。これを行うには、惑星の質量と目的の距離を考慮して、衛星の初期速度ベクトルを計算する必要があります。これは些細なことですが、私の人生では正しく機能させることはできません。

標準的な物理学の教科書によると、質量 M の周りの円軌道にある物体の軌道速度は次のとおりです。

しかし、適切なベクトルを適用した後、衛星は十分な速さではなく、鋭く楕円軌道に落ちます。ランダムにいじってみると、あるケースでは約 3 倍ずれていることがわかります。

私の重力シミュレーションコードは、伝統的なものを使用しています:

G は私のユニバースで 1 に設定されています。

これらの方程式が 2D 空間でも成り立つことを誰かが確認できますか? そうでない理由はわかりませんが、この時点で、問題がコードにあるのか、それとも私の仮定にあるのかを本当に知りたいです...


更新:私の物理エンジンは次のように動作します。

(もちろん、必要に応じてベクトルを使用します。)

現在、フレームごとに 1 つの物理ティックを実行しています。これは 1 秒あたり約 500 ~ 700 回発生しています。これによりエラーが非常に急速に蓄積されることは承知していますが、少なくとも開始する必要があります。

(ちなみに、軌道力学を処理する市販の物理エンジンを見つけることができませんでした --- Chipmunk や Box2D などのほとんどの 2D 物理エンジンは、代わりに剛体構造に重点を置いています。誰か私が見ることができるものを提案できますか?)

0 投票する
4 に答える
486 参照

c# - 莫大な計算が要求される粒子システムに使用する技術は?

X 個のパーティクルを含むパーティクル システムがあります。各パーティクルは、他のパーティクルとの衝突をテストします。これにより、フレームごとに X*X = X^2 の衝突テストが得られます。60f/s の場合、これは 1 秒あたり 60*X^2 の衝突検出に相当します。

これらの集中的な計算に対する最良の技術的アプローチは何ですか? F#、C、C++、C#、またはその他を使用する必要がありますか?

以下は制約です

  1. コードは最新の XNA を使用して C# で記述されています
  2. マルチスレッドが考慮される場合があります
  3. 最も近い隣人との衝突をテストしたり、問題を軽減したりする特別なアルゴリズムはありません

最後の制約は変かもしれないので説明させてください。制約 3 に関係なく、莫大な計算要件を伴う問題が与えられた場合、問題を解決するための最良のアプローチは何でしょうか。アルゴリズムが問題を軽減します。同じアルゴリズムでも、テクノロジによって動作が異なる場合があります。CLR とネイティブ C の長所と短所を検討してください。

0 投票する
1 に答える
592 参照

flash - ActionScript3を使用したジェットコースターゲーム

私はActionScript3でジェットコースターゲームをシミュレートしようとしていますが、2Dエンジン(Box2dなど)を使用するか、最初から実行するかが正確にわかりません。

それらのいずれかについて、私はいくつかのコード例を見たいと思います。

任意のアイデア、ポインタ、提案...事前に感謝します!

0 投票する
1 に答える
2836 参照

physics - 弾丸の物理学の問題

弾丸物理学を使用したことがある方のために...

hello worldの例http://www.bulletphysics.org/mediawiki-1.5.8/index.php/Hello_Worldを読んで実行しましたが、次に進む場所がわかりません。

hello worldチュートリアルは、両方とも剛体であるbtStaticPlaneShapeとbtSphereShapeで構成されていました。球は静的な平面形状で跳ね返りましたが、問題ありません。

ただし、別の球を別の位置に作成すると、Bulletは2つの球の形状間の衝突を記録しませんが、両方ともbtStaticPlaneShapeから自動的に跳ね返ります。btStaticPlaneShapeが衝突するオブジェクトを自動的にバウンスさせるのは、どのような内部魔法ですか?

Bulletには、衝突後にオブジェクトを自動的に跳ね返す設定がありますか?または、手動で衝突をテストし、結果として生じる力を自分で適用する必要がありますか?

ありがとう。