Здравствуйте. Сделал метод для детектирования столкновений непрозрачных пикселей двух картинок 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;
}
Как проверить столкновение непрозрачных пикселей
-
samodelkin
- Сообщения: 52
- Зарегистрирован: 27 ноя 2013, 15:23