Unity: Agua 2D con olas

Para el juego de Villa Sancho prototipe un agua para el mundo de la playa el cual tuviera olas, pudiera tener splash cuando objetos entraran y salieran del agua y distorsionara un poco detrás de el. El prototipo es la imagen de cabecera de este articulo.

Mesh

Todo lo que vemos en nuestro mundo de Unity es un mesh con una textura, entonces para crear el agua se genera un mesh de manera procedural, para eso primero hay que saber que un mesh tiene 3 datos importantes:

  1. Los mesh están  contienen unos puntos llamados vértices que definen las coordenadas de cada parte de los modelos en el mundo.
  2. Todos los mesh están formados por triángulos que solo pueden utilizar los vértices.
  3.  Cada poligono para determinar como van a utilizar las texturas con ayuda de los uv, que van de 0.0f a 1.0f, entonces por ejemplo si solo quieres mostrar la 1/4 de la imagen, solo pones uv(0.5f, 0.5f), cada vértice que usa el polígono debe tener indicado esta parte

A partir de esto basándome en código de tutplus hice la primera versión, la cual recomiendo leer. Esta base tenia 2 problemas. El primero es que sus UV no permitían trabajar con texturas que no fueran un solo color y limitara el uso de shaders; y tiene demasiados polígonos.

El problema de los polígonos surge porque para crear el agua, esta formado por cuadrados que son los que mueves para crear efecto de olas, pero en la versión de tutplus cada cuadro que uno junto al otro, aunque tengan su pared exactamente igual, son 2 paredes en la misma posición, así que busco todos cuadros que tienen paredes similares y hago que compartan el mismo con un MeshWeld.

Tutsplus tiene asignado los UV de cada poligono de 0.0f a 1.0f, es decir cada poligono dibuja toda la textura en el, así que solo es dividir 1.0f/cantidadPolignos(o cuadros), esto permite que la textura funcione mejor y podamos utilizar shaders.

El shader lo tenia guardado de hace mucho, así que no tengo la referencia de quien es 🙁

Es un prototipo, se podria mejorar, pero quise optimizar la versión de tutsplus que esta bastante bueno.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.