Archivo de la etiqueta: 2d

Vuelvo a la carga con nuevo juego

Estoy de vuelta con nuevas ideas y nuevo juego. De momento voy a centrarme en una demo de unas cuantas salas y la mecánica básica y si gusta lo seguiré desarrollando.
La idea es hacer un juego estilo pixel con carácter post-apocalíptico. Se podrá craftear y todavía no tengo claro si podrá llevar armas o será totalmente de sigilo.

Puedes ver un vídeo inicial aquí: https://youtu.be/eM6YJe5PnCg

Prototipo Shooter 2D

Prototipo con Unity 2D de un juego mezcla Shooter 2D y plataformas.

Lo más destacado en este prototipo es:

  • Uso de RaycastHit2D para los disparos.
  • Uso de precisión aleatoria en los disparos.
  • Uso de Linerenderer entre dos puntos.
  • Función de recarga del arma.
  • Uso de variables tipo LayerMask.
  • Desactivación y cambio de cursor
  • Movimiento de plataformas entre dos puntos tipo transform

La idea es ver cómo actúa tanto raycast como linecast. En este ejemplo lo he utilizado para simular un disparo de arma y para comprobar que los enemigos tienen visión directa con el player principal, pero la gente lo suele utiliza también para saber si el personaje está en el suelo, está chocando con algún elemento, etc.

La precisión aleatoria es un elemento que da dificultad y un poco de realismo al juego. Muy fácil de implementar con un Random.Range(-precision,precision) que devuelve un valor comprendido entre la precisión del player.

El uso de linerender se hace necesario para verificar la dirección del disparo y con qué elemento colisiona.

La función de recarga del arma es un añadido que da también realismo al juego y un toque más de dificultad al tener que economizar las balas para no llegar cara el enemigo sin ellas.

El uso de variables tipo Layermask permite seleccionar las capas en las que quieres que actúe raycast. Muy útil para selecionar las capas donde se encuentran los enemigos, las paredes, el suelo, el player,… y dejar fuera las que no se necesiten.

Sigue leyendo

Point and Click mediante walkpoints

Sistema de navegación Point and Click para aventuras gráficas mediante Walkpoints. Con Unity 2D y Javascript. La idea es crear un sistema de navegación fácilmente modificable, así el personaje se desplazaría al walkpoint más cercano de nuestro click en la pantalla.

La lógica es buscar todos los prefabs etiquetados con el label walkpoint y seleccionar el punto más cercano. De este modo nuestro spawn sabrá a qué punto debe dirigirse.

Sigue leyendo

Eliminar prefab permitiendo terminar el sonido

En un artículo anterior recomendé no poner el sonido dentro del prefab o GameObject (una bala por ejemplo), ya que podía iniciarse Destroy antes de finalizar el sonido y quedar cortado. Me equivoqué. La lógica dice (y que poco a poco voy aprendiendo soluciones mejores) que si lo ideal es hacer un prefab ¿porqué vamos a excluir su sonido?. La solución para que no quede cortado es asegurarse que Destroy se aplica una vez el sonido ha finalizado. Por eso se tienen que aplicar estos pasos:

  1. Hacer desaparecer el prefab visualmente.
  2. Eliminar su Collider para evitar otras colisiones
  3. Calcular el tiempo de reproducción del sonido y aplicar Destroy

Prototipo Flappy Bird Unity

Inicio la categoría de prototipos con el desarrollo rápido de un prototipo de Flappy Bird con Unity 2D.

Sigue leyendo

Disparos, prefabs y detectores de colisiones

prefab_bullet
En el siguiente ejemplo vamos a hacer que nuestro mago dispare. Vamos a utilizar prefabs, clones de este prefab y detectores de colisiones.

Para que nuestro personaje dispare necesitamos un sprite al que llamaremos bullet. Con este sprite creamos un prefab que llamaremos bullet y que podemos poner en la carpeta de prefabs. Un prefab es un conjunto de componentes, sonidos, scripts, etc. que podemos clonar y donde al modificar el prefab se modifican todos los clones. El prefab contendrá el sprite de la imágen, el componente Rigid Body 2D con la gravedad a 0 y el Circle Collider 2D. También se le puede añadir sonido, partículas, etc.

El script asociado a bullet será el siguiente:

Sigue leyendo

Creación del grid a través de Instantiate

Creación del grid a través de Instantiate(). En este caso asignamos un sprite como suelo.
Modo de uso: Añadir el script a la cámara principal y asignar un sprite. El movimiento del personaje lo creamos en este otro artículo: Movimiento jugador tipo grid con teclas WASD.

Sigue leyendo