2017-06-20 4 views
0

Ich habe eine Bitmap, die ich mit dem On-Touch-Ereignis und einem Rect in der Mitte des Bildschirms bewegen. Könnte mir jemand sagen, warum die Bitmap und das Rect nicht kollidieren? Ich bin sehr neu im Thema der Kollision.Android Studio Kollision

Danke.

Der Code:

public class Juego extends View implements View.OnTouchListener{ 

Bitmap super_esfera; 
int esferaX = 0; 
int esferaY = 0; 
int left, top, right, bottom; 

public Juego(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.setOnTouchListener(this); 
    setFocusable(true); 

    super_esfera = BitmapFactory.decodeResource(getResources(), R.drawable.super_esfera); 

} 

public void onDraw(Canvas canvas){ 
    Paint paint = new Paint(); 

    Bitmap indexcanvas = Bitmap.createScaledBitmap(super_esfera, 200, 200, true); 
    //Esta es la posicion 
    canvas.drawBitmap(indexcanvas, esferaX, esferaY, paint); 
    left = (canvas.getWidth()/2) - 100; 
    top = (canvas.getHeight()/2) - 100; 
    right = (canvas.getWidth()/2) + 100; 
    bottom = (canvas.getHeight()/2) + 100; 

    canvas.drawRect(left, top, right, bottom, paint); 
} 

public boolean onTouch(View view, MotionEvent event) { 

    esferaX = (int)event.getX() - 100; 
    esferaY = (int)event.getY() - 100; 

    if (esferaX >= left && esferaY >= top && esferaX <= right && esferaY <= bottom){ 
     return false; 
    } 

    invalidate(); 
    return true; 
} 

}

Antwort

1

erstellen rect um super_esfera

RECT2 = new Rect (esferaX-100, esferaY-100, esferaX + 100, esferaY + 100);

erstellen rect um die rect Sie Kollision erstellt

rect = new Rect (links, oben, rechts, unten);

Verwendung schneidet Methode der Rect-Klasse zu sehen, ob kollidierende

if (Rect.intersects(rect,rect2)) { 
    Log.i(getClass().getName(),"coliding now"); 
    } 
+0

Hallo, danke für den aswer, i die RECT2 ändern für „RECT2 = new Rect (esferaX, esferaY, esferaX + 200, esferaY + 200) " und es funktioniert. –