Jak zaimplementować Worms style destructible terrain w XNA?

Chcę prototypować pomysł na grę, którą mam. Pomysł na tę grę polega na tym, że gracz będzie kopać przez ziemię, tworząc tunele i znajdując skarb.

Chcę stworzyć teren w stylu "worms", 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. Przykład 1 Przykład 2

Moje pytanie brzmi jak najlepiej wdrożyć tego typu zniszczalny teren? Używam XNA game studio.

Author: Glorfindel, 2010-01-18

4 answers

Jest jakiś fajny kod na dole tego wątku. Ponadto, ten jest świetnym samouczkiem krok po kroku, jak osiągnąć destrukcyjny teren.

EDIT-oryginalny link do drugiego tutoriala został uszkodzony, więc połączyłem się z zarchiwizowaną wersją.

 34
Author: keyboardP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-19 21:24:02

Riemer ma podobne podejście do gry, którą opracował w XNA, pociski cannon spowodować teren być "zniszczone" i wszelkie rekwizyty, które były wcześniej na wspomnianym terenie są przenoszone odpowiednio.

To musi być refakturowane i ulepszone dla Twoich potrzeb, ale to jest początek.

Riemer ma dobry wybór samouczków do innych rzeczy też.

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

 7
Author: Jamie Keeling,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-18 01:36:09

Są dwie możliwości, jedna praca, ale od XNA zależy jak łatwo ją zaimplementować:

  • jak inni sugerowali, maskowanie bitmap. Zachowujesz bitmapę wszystkich pikseli "naziemnych" i wszystkich pikseli "powietrznych". Jeśli masz grawitację; postać nie może spaść przez ziemię, podczas gdy może spaść przez powietrze.
  • geometria wektorowa. Zaczynasz od prostokątnej "ziemi" i trzymasz listę" usuniętych " ziemi, która tworzy powietrze. Ta geometria jest bardzo prosta do edycji: wystarczy dołączyć okrąg lub podobne do listy i zaktualizuj grafikę. Nie wiem, czy XNA ma zdolności vector & shape;, ale powinno być łatwo stworzyć geometrię za pomocą tych dwóch rzeczy, a później zastosować teksturę lub podobną. Ponadto można to ł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.
 4
Author: Pindatjuh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-18 01:27:13

Oto dwa przykłady, które opierają się na sobie, jak to zrobić z shaderami pikseli w XNA 4. Oba przykłady obejmują sourrecode.

Http://www.syntaxwarriors.com/2012/xna-alpha-mapping-with-pixel-shaders/

Http://www.syntaxwarriors.com/2012/xna-alpha-mapping-with-pixel-shader-and-rendertarget2d/

Robienie tego z shaderami pikseli jest bardzo szybkie, ponieważ wszystkie ciężkie prace są wykonywane na gpu.

 1
Author: JensB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-16 07:15:13