Страница 1 из 1

Как проверить столкновение непрозрачных пикселей

Добавлено: 22 апр 2014, 14:09
samodelkin
Здравствуйте. Сделал метод для детектирования столкновений непрозрачных пикселей двух картинок Bitmap, но он работает очень долго даже при пропуске 16пикселей, подскажите как оптимизировать его? Желательно готовый метод.
public boolean collidesPixels(LayerSprite ls){
if (collidesWith(ls)){
//получаем картинки с каждого спрайта с учетом трансформации матрицы
Bitmap b1=Bitmap.createBitmap(mFrames[mFrameIndex],0,0,getWidth(),getHeight(),matrix,false);
Bitmap b2=Bitmap.createBitmap(ls.mFrames[ls.mFrameIndex],0,0,ls.getWidth(),ls.getHeight(),ls.matrix,false);
//проверяем столкновение пикселей
for(int x1=0;x1<b1.getWidth()-1;x1++){
for(int y1=0;y1<b1.getHeight()-1;y1++){
for(int x2=0;x2<b2.getWidth()-1;x2+=16){
if (b1.getPixel(x1,y1)==Color.TRANSPARENT) continue;
for(int y2=0;y2<b2.getHeight()-1;y2+=16){
//если пиксели непрозрачные и находятся на одной точке
if ((b1.getPixel(x1,y1)!=Color.TRANSPARENT && b2.getPixel(x2,y2)!=Color.TRANSPARENT) && (x1+getX()==x2+ls.getX() && y1+getY()==y2+ls.getY())) return true;
}
}
}
}
}
return false;
}