Stworzyłem grę, w której poruszasz prostokątem i unikasz innych spadających prostokątów z nieba. Chociaż za każdym razem prostokąty przecinają się, nic się nie dzieje.
if(mSquare.intersect(jSquare)){
canvas.drawColor(Color.BLACK);
lub
collision = mSquare.intersect(jSquare);
if(collision==true){ canvas.drawColor(Color.RED);
} this always returns false no matter where the rectangles are.......
Odpowiedzi:
4 dla odpowiedzi № 1Można to zrobić na wiele sposobów, najprostszym byłoby uzyskanie ograniczenia Rect
dla każdego Bitmap
i za każdym razem, aby sprawdzić kolizję za pomocą Rect.intersect()
metoda.
Coś takiego:
boolean collision = player.getRect().intersect(fallingObject.getRect());
Ponadto istnieje wiele innych (lepszych) sposobów, aby to zrobić, szczególnie w przypadku obiektów, które nie są prostokątami i gdy na ekranie jest wiele obiektów. ten post za dobrą dyskusję
Również książka „Rozpoczęcie gier na Androida” zawiera świetny rozdział na temat wykrywania kolizji, a książka jest warta przeczytania, jeśli rozważasz napisanie gry.