私は、破壊可能な地形 (ゲームのワームやスコーチド アースなど) を持ち、マスクを介してピクセル パーフェクトな衝突検出を使用するゲームに取り組んでいます。
レベルは単一のサーフェスであり、現在どのように機能するかというと、フレームごとにコピーを作成し、描画が必要なすべてのスプライトを描画してから、可視領域をディスプレイ サーフェスにブリットします。
フレームごとにレベル サーフェス全体をコピーせずに、pygame にあるピクセル パーフェクトなコリジョン ツールを使用できる方法はありますか?
最初にレベル サーフェスをブリットしてから、画面上のすべてのスプライトをブリットしてみました (座標が静的なプレイヤー キャラクターを除いて、ブリット座標はカメラによって調整されます)。それを修正することはできないようです。
アップデート
私は次の方法でそれを機能させることができました。レベルの可視領域)。
衝突検出フェーズでは、水平面に対して配置された座標と境界ボックスを使用します。上記のように。問題は、カメラの位置がプレイヤーの位置にバインドされていることです。これは静的な値ではなく、そうであってはなりません (どうやってそれを長い間認識できなかったのか、本当にわかりません)。
これで問題は解決しますが、以下の回答は、このような状況でパフォーマンスを改善する方法についてのより包括的な見方です。また、試練をより簡単または迅速にする他のライブラリを使用するための提案も受け付けています。pyglet と rabbyt について考えてみましたが、同じ問題が存在するようです。