2010-01-18 9 views
19

Chcę prototypować pomysł na grę, którą mam. Ideą tej gry jest to, że gracz będzie kopał ziemię, tworząc tunele i znajdując skarb.Jak zaimplementować teren zniszczalny w Worms w XNA?

Czekam na stworzenie terenu w stylu robaka, z wykrywaniem kolizji dla gracza wędrującego i skaczącego po tunelach. Przykłady tego typu dynamicznego terenu można zobaczyć na tych zdjęciach. Example 1 http://img301.imageshack.us/img301/1675/30184730wd6.png Example 2

Moje pytanie brzmi: w jaki sposób jest najlepszym sposobem wdrożenia tego typu ulegające zniszczeniu terenu? Używam studia gry XNA.

+1

Uważam, że zniszczenie odbywa się na podstawie piksela, wraz z CD. Nie jestem pewien, jak działa XNA. –

+0

Silnik agnostyczny: https://gamedev.stackexchange.com/questions/6721/implementing-a-2d-destructible-landscape-like-worms –

Odpowiedz

34

Istnieje niezły kod na dole this thread. Ponadto, this to świetny samouczek krok po kroku na temat osiągnięcia zniszczalnego terenu.

EDYCJA - Pierwotny link do drugiego samouczka został uszkodzony, więc połączyłem się z jego zarchiwizowaną wersją.

+1

Gdybym mógł zagłosować, mógłbym więcej. Świetna odpowiedź! –

+0

+1 za połączenie z gamedev :) – zebrabox

4

Istnieją dwa possibilties, eighter jednej pracy, ale to zależy od XNA, jak łatwo jest do wdrożenia:

  • Jak inni sugerowane, bitmapy maskowania. Zachowujesz bitmapę wszystkich "zmielonych" pikseli i wszystkich "lotniczych" pikseli. Jeśli masz grawitację; postać nie może spaść przez ziemię, podczas gdy może spaść przez powietrze.
  • Geometria wektorowa. Zaczynasz od prostokątnego "podłoża" i trzymasz listę "usuniętego" gruntu, który tworzy powietrze. Ta geometria jest bardzo łatwa do edycji: wystarczy dodać krąg lub coś podobnego do listy i zaktualizować grafikę. Nie wiem, czy XNA ma zdolności kształtu wektora &; ale powinno być łatwo utworzyć geometrię za pomocą tych dwóch rzeczy, a następnie zastosować teksturę lub podobne. Można to również łatwo zoptymalizować, zachowując buforowaną wersję renderowanego krajobrazu i aktualizując tylko pamięć podręczną obwiedni nowo dodanego "powietrza". To rozwiązanie wymaga jednak nieco więcej matematyki.
+0

Mój oryginalny pomysł polegał na wypróbowaniu geometrii wektorowej.Triangulacja geometrii, więc mogę ją narysować za pomocą karty graficznej, jest trochę uciążliwa. –

7

Riemer ma podobne podejście do gry, którą opracował w XNA, pociski armat powodują, że teren jest "niszczony", a wszelkie rekwizyty, które wcześniej znajdowały się na danym terenie, są odpowiednio przemieszczane.

To musi być refaktoryzowane i ulepszone dla twoich potrzeb, ale to dopiero początek.

Riemer ma duży wybór samouczków dla innych rzeczy.

http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series2D/Adding_craters.php