Actualmente implemento un juego con una vista de arriba hacia abajo del océano. Yo uso lo siguiente, una pequeña textura abstracta:
La textura real es transparente, agregué el color verde para mayor claridad.
El problema que tengo ahora es que no sé cómo animar esta textura para que el agua se vea bien. Traté de mover la textura con una ola pecado texture.y += sin(angle)
. Por supuesto, ahora toda la textura se está moviendo, lo que parece poco realista. Lo siguiente que intenté es agregar otra capa e implementar un efecto de paralaje. De modo que los reflejos debajo de la superficie del agua también se moverían, pero mucho más lentamente. Se ve un poco mejor pero aún no ... lo suficientemente agradable.
Creo que la mejor animación sería, si las celdas individuales se expandieran y contrajeran, como una telaraña o tela. Imagínese si alguien tirara levemente de un vértice de estas celdas y la celda vecina se expandiera y la celda que yo jale hacia (o empuje) se contraiga. Algo así como una red de resortes (?). Pero no tengo idea de cómo implementar algo como esto:
- ¿Cuál es el modelo matemático para esto? Algo con resortes, donde las fuerzas empujan / tiran?
- Y si es así, ¿cómo mapeo este modelo a la textura dada? Manteniendo todas las curvas y lo que no ...
(También estoy abierto a diferentes ideas / respuestas sobre cómo animar la textura dada. El realismo no es el punto aquí, solo algunos movimientos agradables como el agua ...)
Solución de DMGregory
Publiqué un ejemplo de libgdx en esta publicación: la animación de agua 2d es irregular y no es uniforme (vea la respuesta sobre el filtrado de texturas)