私は、プログラミングへの最初の進出として XNA を使用して C# でゲーム エンジンを構築してきました。これを使用して、解決方法を知る必要がある問題をより完全に理解したいと考えています。
私が現在取り組んでいるエンジンの部分は、衝突検出です。私が取り組んでいるモードは、画像ベースのプロアクティブな衝突システムです。
キャラクターには位置 (XNA Rectangle) があり、背景には 2 つのテクスチャがあり、キャラクターには Vector2 モーション プロパティがあります。1 は表示テクスチャで、もう 1 つは最初のテクスチャの衝突ゾーンの 2 色マップです。テクスチャ 1 を表示し、背景が読み込まれるたびに、テクスチャの GetData ルーチンを使用してテクスチャ 2 を Color[] の配列に読み込みます。入力解析ルーチンは、位置を直接変更するのではなく、モーション プロパティに追加します。
したがって、各更新: 入力パーサーを確認し、モーション Vector2 に追加します。各サーフェスの位置に沿ったプレーヤーの位置.X/Y.幅/高さをモーションの方向と比較します。モーションがコリジョン ゾーンに到達する場合 (Color[] 配列との比較によって検出)、モーションはゼロになり (重力サブルーチンを除く)、その特定の方向への移動は行われません。
これにより、ブロックの側面にジャンプしても Y 軸のモーションが終了しないスーパー マリオのようなゲームのように、すべてのモーションを停止しないようにすることができます。
さて、私の問題(その説明はすぐに手に負えなくなりました)...
さまざまな解像度をどのように処理すればよいですか? 画像を拡大縮小して目的の領域を埋める方法がわかりません。次に、GetData をプルするために使用できる形式にします。解像度ごとに異なるバックグラウンド衝突検出器をゲームにロードさせたくありません。アート/デザインではなく、コーディングの仕事だと思います。