朝、私はHTML5のCanvas APIをいじってきたし、そうすることの楽しみのかなり多くを持っていた過去数ヶ月にわたりHTML5キャンバス衝突検出「globalCompositeOperation」パフォーマンス
。
私は徐々に自分自身にゲーム開発のやりとりを教えるためのいくつかの小さなゲームを作成しました。私は基本的な衝突の検出、つまりサークルとプラットフォームの衝突を実行できるようになっています(そこではかなり単純ですが、最初に作業を開始したときにはかなりの成果を得ていました。実際に起こっている)。私は、多くのシナリオでは、上記の方法で十分に良い結果を得ることができ、この方法は明らかにリソースが非常に高価であるため、ピクセル衝突検出はすべてのゲームではないことがわかります。
しかし、私はただ脳波を持っていました(これは他の誰かがこれを考えていた可能性があり、私はフィールドを下っていますが、私はそれを探知して何も見つけませんでした)。
キャンバスの「globalCompositeOperation」機能を使用/使用することは可能でしょうか?私の最初の考えは、そのメソッドを "xor"に設定してキャンバス上のすべてのピクセルを透明にすることでした。ピクセルが見つかると、衝突が発生するはずです。右?明らかにこの時点で、問題のピクセルがどのオブジェクトによって占有されているか、どのように対処するかを検討する必要がありますが、他の手法ではこれを行う必要があります。
シェイプがオーバーラップしているときに動作するように、すでにこの衝突検出をキャンバスで行っています。これを拡張することは可能でしょうか?
アイデア?
ゲイリー
こんにちは@puk、ご返信ありがとうございます。あなたはそれが自動的にそれをしないと言うとき...私は、キャンバスが何かが起こっていることを知っている必要があります重なり合っているときにピクセルを透明にするために自動検出が実行されていないことを知っています。私はまた、最初に私に当たったときのパフォーマンスを疑ったが、それについて考えてみると...円形の衝突検出を備えた単純な小惑星ゲームでは、すべてのエンティティを互いに比較し、それぞれの間で3〜マウントする。私はあなたを信じていますが、テストするためにデモを打つことができるかどうかを試してみることがあります。 – Gary
@Gary彼らはeaseljsでそれを使用していましたが、それはちょっと遅かったです。http://stackoverflow.com/questions/2573212/why-is-setting-html5s-canvaspixelarray-values-ridiculously-slow-and-how-can-id – puk
@ゲイリー私はそれがどのように行くのか覚えていないが、これは次のようなものです:一時的なキャンバスに図形を描画し、ポイントが色を持っているかどうかを確認するか、透明かどうかを確認します。それはポイントが内部にあるかどうかをチェックする方法です。その後、衝突検出に使用します – puk