2010-01-18 13 views
19

Quiero prototipar una idea para un juego que tengo. La idea de este juego es que el jugador cavará a través del suelo, creando túneles y encontrando tesoros.¿Cómo implementar un terreno destructible de estilo Worms en XNA?

Estoy buscando crear un terreno 'de estilo gusano', con detección de colisiones para el jugador que deambula y salta por los túneles. Ejemplos de este tipo de terreno dinámico se pueden ver en estas imágenes. Example 1 http://img301.imageshack.us/img301/1675/30184730wd6.png Example 2

Mi pregunta es ¿cómo es la mejor manera de implementar este tipo de terreno destructible? Estoy usando el estudio de juegos XNA.

+1

Creo que la destrucción se realiza por píxel, junto con el CD. No estoy seguro de cómo funciona XNA. –

+0

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

Respuesta

34

Hay un buen código en la parte inferior de this thread. Además, this es un gran tutorial paso a paso para lograr un terreno destructible.

EDITAR - El enlace original para el segundo tutorial estaba roto, así que lo he vinculado a una versión archivada de él.

+1

Si pudiera votarte más, podría. ¡Gran respuesta! –

+0

+1 para vincular a gamedev :) – zebrabox

4

Hay dos possibilties, eighter una obra, pero depende de XNA lo fácil que es poner en práctica:

  • Al igual que otros sugirieron, mapa de bits de enmascaramiento. Mantiene un mapa de bits de todos los píxeles "terrestres" y todos los píxeles "aéreos". Si tienes gravedad un personaje no puede caer a través del suelo, mientras que puede caer por el aire.
  • Geometría del vector. Empiezas con un "suelo" rectangular, y mantienes una lista de terreno "removido", que crea aire. Esta geometría es muy simple de editar: solo agregue un círculo o similar a la lista, y actualice los gráficos. No sé si XNA tiene las capacidades de forma del vector &; pero debería ser fácil crear geometría con estas dos cosas, y luego aplicar una textura o similar. Además, esto puede ser fácil de optimizar, manteniendo una versión en caché del paisaje representado y solo actualice la caché del cuadro delimitador del "aire" recién agregado. Sin embargo, esta solución requiere un poco más de matemáticas.
+0

Mi idea original era probar la geometría vectorial.Triangular la geometría para que pueda dibujar usando la tarjeta gráfica es un poco molesto. –

7

Riemer tiene un enfoque similar al de un juego que desarrolló en XNA, los proyectiles de cañón causan que el terreno sea "destruido" y cualquier objeto que estuviera previamente en dicho terreno se mueve en consecuencia.

Necesita ser refactorizado y mejorado para sus necesidades, pero es un comienzo.

Riemer tiene una buena selección de tutoriales para otras cosas también.

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

Cuestiones relacionadas