Colision Sobre Plataformas 2D XNA
Colision Sobre Plataformas 2D XNA >> https://blltly.com/2touak
Hoy a mostrar una forma de cómo hacer un juego donde el héroe pueda saltar sobre varias plataformas, además de incluir gravedad para que cuando no se encuentre sobre una plataforma se caiga hasta que encuentre una plataforma.
Para manejar el flujo de cómo se comportan los Sprites, voy a crear una clase llamada Mundo, que será la encargada de tener una lista de todos los sprites y de actualizarlos adecuadamente, manejando las colisiones.
En el método Update, recorremos cada Sprite de la lista, y le aplicamos la gravedad con el peso de cada Sprite, luego movemos el Sprite y verificamos que no hayan colisiones con otros Sprites, si hay colisión (si el método de CalcularDistanciaMinimaDeTraslacion retornó un valor diferente a Cero) se llama la función Colision del Sprite.
Ahora podemos volver a ver la clase Jugador y ver el método sobrecargado Colision, en este método cuando hay colisión, se verifica que la colisión sea con un muro (aunque es el único sprite diferente al Jugador, pero para futuros proyectos) y el Sprite del jugador se mueve al valor que retornó el método CalcularDistanciaMinimaDeTraslacion, pero cuando el valor de Y es negativo no vamos a mover el jugador, sino que dejamos que el movimiento hacia abajo lo haga es la gravedad, si comentamos esa parte del código, cuando el jugador este casi cayendo de una plataforma se caerá rápidamente.
Declaramos una variable para el Mundo y otra para el Jugador, en el constructor inicializamos la clase mundo y adicionamos a la lista de Sprites varios muros, los primeros muros son los límites de la pantalla, para evitar que el jugador se salga de la pantalla, los otros son algunas plataformas que dibujo en la pantalla, los muros los inicializo con el tamaño y la posición, la textura que tienen es un png de 512 x 512 de color blanco, cuando se hace el Draw del Sprite, con el tamaño recorto la textura origina y con el Color asignado en el constructor lo pinto.
Lo que sigue es que modifiquen el código, adicionando más sprites como bonus o enemigos, y jugando con las colisiones, además de adicionar estados y condiciones para que el jugador solo pueda saltar una vez, o continuar con el jetpack y hacer juegos de Jetpacks.
Saludos martin, podrias realizar un simple ejemplo con una plataforma. me explico mejor supongamos que el personaje esta debajo de la plataforma y desea saltar hasta ella pero no colisiona con ella si no cuando esta por encima o que venga cayendo. gracias
Podrías haber visto el tutorial de Stephane Beniak sobre el Juego de la Vida clásico aquí en Gamedevtuts+. Este tutorial, por Mikola Lysenko, discute una nueva variante interesante: una generalización del Juego de la Vida para espacios suaves, aplicada a superficies curvas arbitrarias.
Éste es un tutorial corto y simple, intencionado para mostrar el poder de las librerías de Flash de Estornino y Nuca, pero realmente me gusta el resultado! La real lógica tras la creación del terreno es lo suficientemente fácil para entender que podrías importarla a muchas otras plataformas de gamedev.
Este tutorial, por Rahul Srivastava de los juegos de Rotating Canvas, podría quizás ir muy bien con el tutorial de Michael Hoffman sobre los Efectos Dinámicos 2D de Agua el cual publicamos anteriormente este año. Rahul explica cómo usar los sombreadores OpenGL, una función senoidal, y un ruido aleatorio para crear un efecto impecable de la superficie del agua.
Está bien, este realmente es más un tutorial CS que un tutorial específico sobre el código en gamedev, pero no pude resistir incluirlo aquí porque amo la presentación. Las animaciones aleatorias ayudan a ilustrar lo que claramente ya es un tutorial claro.
En esta pieza de dos partes (la parte dos está aquí), los desarrolladores de N explicaron lo básico de sus sistemas de detección de colisión. Si quieres llevar esto más lejos, Shiu escribió un tutorial para nosotros sobre los mismos conceptos.
Este efecto de lámpara de lava es muchas veces usado para hacer líquidos, y funcion