Pare dni temu siedziałem nad detektorem kolizji dla prostej gry 2D. "Coś" nie działało, więc pierwsze podejrzenie na funkcję analizującą, czy 2 prostokąty nachodzą na siebie. Wyglądało to mniej więcej tak:
boolean doesColide(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) { return ( max(ax1, ax2) >= min(bx1, bx2) && min(ax1, ax2) <= max(bx1, bx2) && min(by1, by2) <= max(ay1, ay2) && max(by1, by2) >= min(ay1, ay2) ); }

Czas pisania kodu: 2 minuty. Czas testowania: 2 minuty.
boolean doesColide(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) { return ( max(ax1, ax2) >= min(bx1, bx2) && min(ax1, ax2) <= max(bx1, bx2) && min(by1, by2) <= max(ay1, ay2) && max(by1, by2) >= min(ay1, ay2) ); } void setup() { size(400, 400); background(255); } void draw() { background(255); rect(150, 150, 100, 100); if (doesColide(mouseX-50, mouseY-50, mouseX+50, mouseY+50, 150, 150, 250, 250) ) fill(255, 0, 0); else fill(0, 255, 0); rect(mouseX-50, mouseY-50, 100, 100); fill(0); }
Brak komentarzy:
Prześlij komentarz