ビューベースのアプリケーションで完全なピクセル衝突を実行することは可能ですか?私はサンプルコードを探していましたが運がありません...特定の色の衝突を表すためにカラービットマップを使用できますか?ピクセルの完全な衝突?
2
A
答えて
2
できます。あなたがCGImageを使っても簡単です。
ピクセル値を読み取ってヒットグリッド(基本的には2x2マトリックス)を構築し、それをゲームオブジェクトクラスに格納するために2Dブール値配列を作成することができます。
あなたは配列ブール値に画素データを読み出し、その後、ループに使用CGImage (the code is here)の画素データに直接アクセスする必要があるであろう:doesnの明らかに、
BOOL pixelGrid[xPixels][yPixels];
for (int i = 0; i < xPixels; i++) {
for (int j = 0; j < yPixels; j++) {
pixelGrid[i][j] = pixelIsOpaque(i, j);
}
}
方法pixelIsOpaque()上記」サンプルコードがピクセル値を抽出するために与えたもので置き換えてください。
このグリッドを作成したら(プログラムの最初にそれを生成し、結果の2D配列をゲームオブジェクトの中に格納します)、次にあなたはピクセルが存在するかどうかを保存しています衝突検出方法が必要です。
BOOL detectCollision(BOOL *pixelGrid1, BOOL *pixelGrid2) {
BOOL result = NO;
for (int i = 0; i < xPixels; i++) {
for (int j = 0; j < yPixels; j++) {
if (pixelGrid1[i][j].opacity != 0 && pixelGrid2[i][j].opacity != 0]) {
result = YES; break;
}
}
}
return result;
}
私は100%のコンパイルではないかもしれないので、私はその場でこのコードを書いたが、私は、それはあなたのアイデアを与える願っています。 これを簡単に変更することはできますが、不透明度と比較するのではなく、元の色データを取得するためにピクセルの色の値と比較するだけです。see here
関連する問題
- 1. ピクセル完全な衝突+ブリッティング
- 2. スプライトシートアニメーションのピクセル完全衝突、XNA
- 3. C++ 3D完全衝突検出
- 4. どのように私はcocos2d iphoneとピクセルの完全な衝突を行うには
- 5. cocos2dのスケーリングされたスプライトでピクセルの完全な衝突を見つける方法は?
- 6. アクションスクリプト3.0で衝突イベント後にオブジェクトを完全に削除
- 7. OpenGLピクセルの完全な2D図面
- 8. 2つの画像間のピクセル衝突/オーバーラップの検出
- 9. 単純なボールパドルの衝突
- 10. BISON:shift/reduceの衝突なし
- 11. ファーサーの衝突
- 12. カラーボールの衝突
- 13. ジェネリックコレクションの衝突
- 14. BOX2D衝突グループ
- 15. ActionsScript 3衝突
- 16. 乱数衝突
- 17. サークル衝突式
- 18. cocos2dチェック衝突
- 19. ActionScriptは衝突
- 20. Javascriptゲームレベルの衝突
- 21. WCFタイプの衝突
- 22. リフレッシュb2Bodyの衝突
- 23. サーブレットマッピング/ Strutsの衝突
- 24. zend:パラメータの衝突
- 25. 車の衝突シミュレーション
- 26. XNAタイルベースの衝突
- 27. htmlピクセルに完全に一致する
- 28. どのように衝突を検出するが、box2dで衝突しない?
- 29. n体衝突検出とペアワイズ衝突検出の違いは?
- 30. OpenGL衝突検出
+1優れた情報です。私は実際に自分自身の完全なピクセルの衝突に興味がありました。今週末にこれがうまくいくかどうか試してみるつもりです。私はパフォーマンスについて懸念していますが、それは後で取り組むことができる他の問題です。 – Tovi7