2010-01-18 15 views
19

Voglio prototipare un'idea per un gioco che ho. L'idea per questo gioco è che il giocatore scaverà attraverso il terreno, creando tunnel e trovando un tesoro.Come implementare un terreno distruttibile in stile Worms in XNA?

Sto cercando di creare un terreno "worms style", con rilevamento delle collisioni per il giocatore che vaga e salta nei tunnel. Esempi di questo tipo di terreno dinamico possono essere visti in queste immagini. Example 1 http://img301.imageshack.us/img301/1675/30184730wd6.png Example 2

mia domanda è come è il modo migliore per attuare questo tipo di terreno distruttibili? Sto usando lo studio di gioco XNA.

+1

Credo che la distruzione avvenga su base per-pixel, insieme al CD. Non sono sicuro di come funzioni XNA. –

+0

Agnostico del motore: https://gamedev.stackexchange.com/questions/6721/implementing-a-2d-destructible-landscape-like-worms –

risposta

34

C'è un bel codice nella parte inferiore dello this thread. Inoltre, this è un ottimo tutorial passo-passo per raggiungere un terreno distruttibile.

MODIFICA - Il collegamento originale per il secondo tutorial è stato interrotto, quindi sono collegato a una versione archiviata di esso.

+1

Se potessi votare di più, potrei. Bella risposta! –

+0

+1 per il collegamento a gamedev :) – zebrabox

4

ci sono due possibilties, eighter una sola opera, ma dipende da XNA quanto è facile da implementare:

  • Come altri hanno suggerito, bitmap mascheramento. Mantieni una bitmap di tutti i pixel "ground" e di tutti i pixel "air". Se hai gravità; un personaggio non può cadere attraverso il terreno, mentre può cadere attraverso l'aria.
  • Geometria vettoriale. Si inizia con un "terreno" rettangolare e si tiene un elenco di terreno "rimosso", che crea aria. Questa geometria è molto semplice da modificare: basta aggiungere una cerchia o simile all'elenco e aggiornare la grafica. Non so se XNA abbia capacità di forma vettoriale &; ma dovrebbe essere facile creare la geometria con queste due cose e successivamente applicare una trama o simili. Inoltre, questo può essere facile da ottimizzare, mantenendo una versione cache del paesaggio reso, e aggiornare solo la cache del riquadro di delimitazione della "aria" appena aggiunta. Questa soluzione richiede un po 'più di matematica però.
+0

La mia idea originale era di provare la geometria vettoriale.Triangolare la geometria in modo che io possa disegnarlo usando la scheda grafica è un po 'un dolore, però. –

7

Riemer ha un approccio simile a un gioco che ha sviluppato in XNA, i gusci di cannone fanno sì che il terreno sia "distrutto" e qualsiasi oggetto che prima si trovava su quel terreno veniva spostato di conseguenza.

Deve essere refactored e migliorato per i vostri bisogni ma è un inizio.

Riemer ha una buona selezione di tutorial per altre cose.

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