Publicado en 7 de junio, 2019
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:
- Los mesh están contienen unos puntos llamados vértices que definen las coordenadas de cada parte de los modelos en el mundo.
- Todos los mesh están formados por triángulos que solo pueden utilizar los vértices.
- 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.
Comentarios recientes