私は基本的な 3D XNA ゲームに取り組んできました。これまでのところ、さまざまなキャラクター モデルをより大きなレベル/ワールド モデルにロードすることができました。ユーザー/プレイヤーがキャラクターの 1 つを世界中で動かせるようにする基本的なコントロールをいくつか入れました。また、BoundingSphere/BoundingBox を使用して、他のキャラクター モデルとの衝突検出を実装しました。
ただし、キャラクター モデル (現時点では) は Y 軸上の固定された場所に固定されているため、私の世界は実際には滑走するための平面にすぎません。
私が今やりたいことは、重力のような力を実装することです。これにより、キャラクターが地形の流れに合わせて上昇したり落下したりできるようになります。キャラクターの境界球と世界の実際のメッシュとの間の詳細な衝突をチェックする何らかの方法について、Google 検索に (無駄に) 数時間を費やしました。私が見つけた記事はすべて、球体とボックスの方法の使用方法、または外部物理エンジンの実装方法を説明しているようです (これらはすべて、私が達成したいことに対して非常に精巧に見えます)。
だから私の質問は2つあります -
- まず、私はこれに最善の方法で取り組んでいますか? 私の世界に大きなモデルが 1 つありますか?
- 次に、XNA ライブラリ自体、またはまったく新しい物理層を導入する必要のない他のライブラリを使用して、必要な衝突のタイプを確認する比較的簡単な方法はありますか。
注意。衝突を確認したいモデルは次のとおりです。 Microsoft.Xna.Framework.Graphics.Model
編集:
また、単一のレベルを作成しているのではなく、データベースからロードされたさまざまなレベルで動作するゲーム エンジンを作成していることにも言及する必要があります。このため、レベルの制約を個別に/手動で定義する必要はありません。理想的には、データベースから単一のメッシュをロードして、それとの衝突をそのまま検出できるようにするか、メッシュ データから制約/境界領域を自動的に計算したいと考えています。