1

車両が地面に沿って走行する新しいゲームを作成しようとしていますが、スラスターを使用して一時的に空中に浮く機能もあります。

私はゲーム プログラミングに関しては比較的初心者ですが、Java、C、C++ などでのコーディングはかなり得意なので、それが問題になるとは思いません (ゲームの最初のイテレーションは Java であると考えていました)。私の問題は、私がゼロから始めていることであり、車両が通り抜けないように地形を障壁にする方法を考えることができないということです. そして、どうすれば落下ダメージを受ける可能性がありますか?

過去に、これがすでに含まれているため、レプリカ島のソースに誘導されました。衝突システム全体が表示されますが、これまでのところ、それを理解することができず、誰かが喜んでくれることを望んでいました.私に手を貸してください。

ありがとうございました

-ロフラ

4

2 に答える 2

5

ゲームの開発には何を使用していますか? エンジンまたはグラフィックス ライブラリ? グラフィック ライブラリ、グラフィック エンジン、およびゲーム エンジンの 3 つのレベルが基本的にあります (私はそれらについて考えるのが好きです)。

  • グラフィックス ライブラリは、OpenGL や DirectX など、可能な限り低レベルのものです。地形を描きたいときは、三角形のメッシュとして描き、それらの三角形の頂点などを定義します。

  • グラフィックス エンジンはその上の 1 つのレイヤーです。それらの例 (少なくとも C++ の場合) は、Ogre3D、Horde3D、および Irrlicht です。それらは多くの下位レベルのコマンドを処理し、より上位レベルの観点からグラフィックスに集中できるようにします。

  • ゲームエンジンは、グラフィックス関連のほとんどすべてを処理します。これら (再び C++) の例は、Unity と UDK です。彼らは通常、あなたのために多くのゲームプログラミングを行うことができます. おそらく、モデリング プログラム (3dsmax など) で地形を描画し、それを何らかの形式にエクスポートすると、エンジンがそれを丸呑みして、それを処理する方法を正確に認識します。

私は 3 つすべてを試しましたが、グラフィック ライブラリが最も興味深いと思います。ただし、ゲームを作るのにおそらく最も時間がかかります。また、より多くの数学 (線形代数) も必要です。

地形との衝突検出に関する限り。その地形を構成する三角形について知っておく必要があります。ゲーム エンジンを使用している場合、地形のメッシュとキャラクターのメッシュをある種の「シーン ノード」に格納できるはずであり、衝突検出は自動的に処理されます。ただし、自分ですべてを処理する場合は、これを行うための一般的なアルゴリズムが多数あります。

  • バウンディング ボックス: キャラクターが人 (または動物など) の形をしていても、それらをボックスとして扱い、そのボックスが地形を構成するメッシュの三角形と交差するタイミングを確認します。
  • Bounding Sphere: キャラクターを球体として扱います。これは、球体が衝突した場合にはるかに見やすくなるためです。「球の中​​心から他のメッシュまでの距離」で「球の半径」を確認するだけです。次に、その球が衝突している場合は、キャラクターをより正確に表す小さな球に分割します。そこから 3 回または 4 回反復するか、キャラクターを表現したいだけ正確に再帰します。ただし、ゲームのすべてが高速で高速である必要があることを忘れないでください。そのため、再帰を制限します。

境界球の衝突検出に関する優れた記事

基本的に、バウンディング ボックスで表されるキャラクターが、衝突検出を必要とする地形を歩き回ることができるサンプル OpenGL プログラムを作成しました。それがどのように機能するかについてもっと興味がある場合はお知らせください。

落下によるダメージにはいくつかの方法で対処できます。

  1. キャラクターが飛んでいない場合は、単純なステート マシンを使用できます。彼らが空中に入ったら、状態を「IN AIR」に変更し、ゲームの外観が実行されている間、タイマーを設定して、空中にいる時間を追跡します。彼らが空中にいる時間が長すぎる場合は、そこにいる時間に基づいてさまざまな量のダメージを計算してください。
  2. より正確な方法は、キャラクターの y 速度を追跡することです。これは実生活に正確です。ゆっくりと落下している場合は、落下ダメージがあっても意味がありません。速く転ぶと、速く進むほど怪我をします。だから、falling_speed をダメージに関連付けるある種の方程式を考え出してください。次に、地面に着地したら、ステート マシンを「ON_GROUND」に戻し、fall_speed (おそらく y_velocity) を確認します。
于 2011-04-15T20:22:03.123 に答える
2

Nvidia PhysXを試してみることもできます。その名前が示すものとは別に(車の物理をモデル化することが私に考えさせられたものです)、衝突検出、クォータニオンなどの特定のユーティリティによって公開される機能もたくさんあります。数学など

私はこれをオープンソースのグラフィックエンジンであるOgre(これまでのところ;-) ...で使用しています。OpenGL-DirectXとLinux-Microsoftの切り替えは比較的簡単です)。

あなたはすでにコードの書き方を知っているので、私は上記を実行可能なものとして提案します。代替案ではなく、オープンエンドのソースです。ホイールの必要な部分だけを作り直すようにします。

于 2011-08-10T20:49:44.323 に答える