1

私は単純なゲームを書こうとしていますが、単純な物理学だと思うものに行き詰まっています。ポイント 0,0,0 で、たとえば 1 秒あたり 1 単位で移動するオブジェクトがあります。オブジェクトが 1 秒あたり 15 度、6 秒間回転し (開始位置の右 90 度になる)、1 秒あたり 1 単位で 4 秒間加速するように指示した場合 (つまり、最終速度は 5 です)単位/秒)、その終点をどのように計算しますか?

加速していない物体についてこれに答える方法を知っていると思います。なぜなら、それはただの円だからです。上記の例では、円の円周は距離の 4 倍であることがわかり (円の 1/4 を横切っているため)、そこから半径と角度を計算し、単純な三角関数を使用して答えを解くことができます。

ただし、任意の時点で、オブジェクトは前の瞬間よりもわずかに速く移動しているため、最終結果は円ではなく、ある種の円弧になります。各ステップ (たとえば 1 秒あたり 60 ステップ) をループすることで終点を推定できると思いますが、これはエラーが発生しやすく、非効率的です。

誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

1

一歩踏み出すというあなたの概念は、まさにあなたがしていることです。

ほとんどすべてのゲームは、いわゆる「ゲーム ティック」の下で動作します。実際には、進行している可能性のあるさまざまなダニがいくつかあります。

「ゲーム ティック」 - 各ゲーム ティック、一連のリクエストが発行され、AI が再評価され、全体的なゲームの状態が変化しました。

「physics tick」 - 各物理ティック、各物理オブジェクトは、現在の物理状態に基づいて状態が変化します。

「グラフィック ティック」 - レンダリング ループとも呼ばれ、ゲームの状態を画面に描画するだけです。

ゲーム ティックと物理ティックは頻繁に一致しますが、一致する必要はありません。オブジェクトを現在の移動ベクトルに沿って現在の速度で移動させ、必要に応じて (速度を変更して) 重力を適用し、完全に別のループで追加の加速 (おそらくロケット ブースターを介して?) を追加する物理ティックを設定できます。適切なマルチスレッド処理を行えば、うまく収まります。それらが分離されているほど、後でより良い実装と交換することが容易になります。

時間ステップによるシミュレーションは、リアルタイム ゲームでほぼすべての物理現象が行われる方法です。私は防衛省のために熱モデリングを行っていました.それは私たちがそこでも物理モデリングを行った方法です.

また、これにより、物理エンジンに複雑な回転を実装できます。物理エンジンの特殊なケースが少なければ少ないほど、壊れることは少なくなります。

于 2011-05-03T08:48:49.490 に答える
0

あなたが求めているのは、実際には数学的変化率の質問です。動いているすべてのオブジェクトには、(x、y、z)の位置位置があります。コンポーネントの速度と加速度を個々の平面に分解できる場合、最終的な終点は(x1、y1、z1)になります。これは、その平面での方程式のそれぞれの結果です。

それが役に立てば幸い (:

于 2011-05-03T08:49:57.980 に答える