Mam grę Breakout, w której w pewnym momencie wykrywam kolizję między piłką a wiosłem za pomocą czegoś takiego:
// Ball class
rectangle.Intersects(paddle.Rectangle);
Czy jest jakiś sposób na uzyskanie dokładnych współrzędnych kolizji lub jakichkolwiek szczegółów na jej temat z prądem XNA API
?
Myślałem o przeprowadzeniu podstawowych obliczeń, takich jak porównanie dokładnych współrzędnych każdego obiektu w chwili zderzenia. Wyglądałoby to tak:
// Ball class
if((rectangle.X - paddle.Rectangle.X) < (paddle.Rectangle.Width / 2))
// Collision happened on the left side
else
// Collision happened on the right side
Ale nie jestem pewien, czy jest to właściwy sposób na zrobienie tego.
Czy macie jakieś wskazówki na temat silnika, którego mógłbym użyć, aby to osiągnąć? A może nawet dobre praktyki kodowania przy użyciu tej metody?
źródło
get the rectangle where the two overlap
funkcjonalność jest dostępna naXNA API
lub muszę pobrać dodatkowe rzeczy, takie jakPlatformer Starter Kit
?Rectangle Rectangle.Intersects(...)
.rectangle.X
alborectangle.Y
czy cokolwiek chcesz uzyskać dostęp.Aktualizacja: Jeśli używasz MonoGame, to od wersji beta 3.0
Rectangle Rectangle.Intersect(rectangle, rectangle)
nie istnieje. Zamiast tego możesz użyć poniższego kodu z zestawu XNA Platformer.Możesz pobrać XNA Platformer Starter Kit ( przeniesiony do systemu Windows 7 ). Jest dostarczany z metodą rozszerzenia pomocnika, która zwraca prostokąt opisujący przecięcie dwóch prostokątów:
źródło
ssb
, ale bardzo za to dziękuję. Na pewno dostanę się do tego portu! Wielkie dzięki!