J'implémente actuellement un jeu avec une vue de haut en bas de l'océan. J'utilise ce qui suit, une petite texture abstraite:
La texture réelle est transparente, j'ai ajouté la couleur verte pour plus de clarté.
Le problème que j'ai maintenant, c'est que je ne sais pas comment animer cette texture pour que l'eau soit belle. J'ai essayé de déplacer la texture avec une vague de péché texture.y += sin(angle)
. Bien sûr, maintenant toute la texture bouge, ce qui semble irréaliste. La prochaine chose que j'ai essayée est d'ajouter un autre calque et d'implémenter un effet de parallaxe. De sorte que les réflexions sous la surface de l'eau se déplaceraient également, mais beaucoup plus lentement. Ça a l'air un peu mieux mais toujours pas ... assez sympa.
Je pense que la meilleure animation serait, si les cellules individuelles se dilataient et se contractaient, un peu comme une toile ou un morceau de tissu. Imaginez que quelqu'un tire légèrement sur un sommet de ces cellules et que la cellule voisine se dilate et que la cellule vers laquelle je tire (ou pousse) se contracte. Un peu comme un réseau de ressorts (?). Mais je ne sais pas comment implémenter quelque chose comme ça:
- Quel est le modèle mathématique pour cela? Quelque chose avec des ressorts, où les forces poussent / tirent?
- Et si oui, comment mapper ce modèle à la texture donnée? Garder toutes les courbes et quoi non ...
(Je suis également ouvert à différentes idées / réponses sur la façon d'animer la texture donnée. Le réalisme n'est pas le point ici, juste une belle eau comme des mouvements ...)
Solution de DMGregory
J'ai posté un exemple de libgdx dans ce post: l'animation de l'eau 2D est irrégulière et non fluide (voir la réponse sur le filtrage des textures)