衝突とゲームオブジェクトと、床について重力?
-
22-07-2019 - |
質問
どのようなゲームと重力の関係の移動のような選手は、モンスターやオブジェクトとのでしょうか。のプレーヤーを常に落ち"の階れまで戻す。
二つの反応の衝突をいただきたい点は、移動のプレーヤーを目の位置を以前の衝突試験の新しい位置移動がもたらすことになるだろう衝突させないと、どちらも対応プラットフォームは上昇以上であり、必要吊上げることのできる学生とのラブストーリーである。私はこれからの2次元のゲームデザイン的になってきたのでしょうか、同じ問題が発生した場合に3Dゲームデザイン。他のヒント?いず参照しているつもりだったが、いチェック。感謝。
解決
するためにチェック GameDev.net's"重力のFaq 一部の基本情報
しておりますのでリアルタイムでウェブサイトではない高精度な物理モデラーまで離れて オイラーインテグレーション.場合に必要な精度の増加に最も人気の統合方法。使用は Runge-Kutta(RK4)インテグレーション.それもありますなこれらの単純なゲームでも用いてより高度な物理シミュレーションおよび3dゲーム。に不利用RK4は少し複雑化、少し遅くなります。で非常に正確なものがきわいいoleオイラー.
聞いて同様の質問には、"どのように申請重力マイ弾むボールゲーム"なんくつかの良い答えなのです。て最初にすることだけでいいよというのはお選び任意重力定数のごゲームです。私のバウンシングボール申請を使用したいデフォルトの重力定数の2000px/sとなります。まだ遊びたいこの重力に一定の効果が特定のゲームです。
次に、たいとして導入できるようにします。レンダリングゲーム更新のゲームでオブジェ。これを与えるのを防ぐために、ゲーム内の物体の移動速い高速コンピュータやスが遅いコンピュータまた、物理、スピードのある物体移動するための独自のコンピュータ高速になります。良い記事は ゲーム物理学固定timestep!.
どのようにしている。おしどのくらいから時間が経過し、前回の通話を更新方法です。作成した2つのスレッドではない直接必要です。私はゲームの更新のスレッドにレンダリング。の更新スレッド制御の更新のゲームの物体の位置があります。の更新スレッドを知ってきたので前回の呼び出されると、現在の時間から計算する経過時間以降にアップデート方法が行われようとしていました。
適用の重力までのY速度のオブジェクトによる当社の重力定数を乗じた経過時間。
private long previousTime = System.currentTimeMillis();
private long currentTime = previousTime;
public void updateGame()
{
currentTime = System.currentTimeMillis();
float elapsedSeconds = (currentTime - previousTime) / 1000f;
foreach(GameObject gameObject in gameObjects)
{
// Apply gravity to velocity vector
gameObject.velocity.y += (gravityConstant * elapsedSeconds);
// Move objects x/y position based off it's velocity vector
gameObject.position.x += (gameObject.velocity.x * elapsedSeconds);
gameObject.position.y += (gameObject.velocity.y * elapsedSeconds);
}
checkCollisions();
previousTime = currentTime;
}
ることが全てのオブジェに基づき、その速度ベクトルの適用性に基づく貴重力定数です。すべてのベストにない独自のコンピュータの速さだ。
お答えしその他の質問があり、オブジェクトは常に、"力"の重力yベクトルとなっています。いますので、常に衝突する。しかし、ひとつまたは使用 イプシロン値 うオブジェクトをお持ちの速度ゼロになります。そして、衝突検出の一環として刈り込み工程で通常はスキップで確認すれば、移動オブジェクトが衝突しない(その逆のは、ちょっと素敵でした。).
私のような衝突が見物に衝突(浸透)の、押ししていく、そんなほのぼの最小換距離(MTD)seperatesします。このステップはなく、多くのバグゲームのオブジェ"こだわった"とjitterly移動。一度は行中の整数の区切りはすべてを計算して私の衝突に応じます。
この方法で作に記載のシナリオが上昇します。のプラットフォームが上昇を続けると、オブジェクトを分離し、そのものを使用MTDとは、利用プラットフォームで自然に上昇します。
困ったときには、衝突応答がいるのを見る:
他のヒント
その際の一つのアプローチの一部のゲームはチ:独立した状態で歩くのvs。歩きながら、ゲームエンジンを測定することができる斜面の表面などのウィンタースポーツを満喫しない場合はも急な移動の文字の方向には表面としての文字を適切に縦配置に対す。
として物理学んのファンになりのverlet統合に記載のとおり Gamasutra:先端文字の物理学.で容易に物理学の更新方程式のないトラックの速度!) で簡単に衝突なして速度を調整す!).とはいえない 少しニュアンス が必要な場合。
最も完全科の教科書を対象とする リアルタイム衝突検出 によるChrister-エリクソンですね.その 相手のブログ ます。エリック-Lengyelの 数学のための3Dゲームプログラミングとコンピュータグラフィックス に便利です。
私は具体的には、ゲームプログラマ、これは私の理解
- 理想の世界に、"無限のフレームレート"は、思いを検出する衝突時に瞬間で生じた、利用ビットの標準による物理モデルの速度や加速度の体の衝突を参照標準の高校力学の教科書、あるいは、さまざまな著書に"もの"のような物理ゲームのプログラマ")
- 実際には、固定フレームレートが体を動かすだけではなく、一定の粒度は、通常、追加する必要があり、エコツなどあらかじめ計算し、相対パスの団体旅行の次のフレームを見た場合には経路が交差する
- いが交差する、次の交差点からする の見積り, が、若干の誤りの点を体感い衝突;それのない優しさと思いやりを取り入れることにより推定ポイントとしての交差点を直線補間の速度での衝突となることが、より高精度な計算だいることが分かりますが交差する、実際のポイント/時間/速度での衝突
のほか、モデリングの衝突、アプローチにもモデルの継続的移転のエネルギーや運動量、速度に応じて、複雑さのシミュレーション).場プレーヤーが、プラットフォーム店する情報を表すオブジェクトのプラットフォーム時の速度のオブジェクトを調整することでその変化のthuslyリンクプレーヤーやその他のオブジェクト。