Ich implementiere derzeit ein Spiel mit einem Top-Down-Blick auf den Ozean. Ich benutze folgende, ein wenig abstrakte Textur:
Die eigentliche Textur ist transparent, ich habe der Klarheit halber die grünliche Farbe hinzugefügt.
Das Problem, das ich jetzt habe, ist, dass ich nicht weiß, wie ich diese Textur animieren soll, damit das Wasser schön aussieht. Ich versuchte , die Textur mit einer Sinuswelle zu bewegen: texture.y += sin(angle)
. Natürlich bewegt sich jetzt die gesamte Textur, was irgendwie unrealistisch aussieht. Als nächstes habe ich versucht, eine weitere Ebene hinzuzufügen und einen Parallaxeeffekt zu implementieren. Damit würden sich auch Reflexionen unter der Wasseroberfläche bewegen, allerdings viel langsamer. Es sieht ein bisschen besser aus, aber immer noch nicht ... nett genug.
Ich denke, die am besten aussehende Animation wäre, wenn sich die einzelnen Zellen ausdehnen und zusammenziehen würden, wie ein Netz oder ein Stück Stoff. Stellen Sie sich vor, jemand würde an einem Scheitelpunkt dieser Zellen leicht ziehen und die benachbarte Zelle würde sich ausdehnen und die Zelle, zu der ich ziehe (oder die ich drücke), würde sich zusammenziehen. Ein bisschen wie ein Federnnetz (?). Aber ich habe keine Ahnung, wie ich so etwas implementieren soll:
- Was ist das Mathe-Modell dafür? Etwas mit Federn, wo Kräfte drücken / ziehen?
- Und wenn ja, wie ordne ich dieses Modell der angegebenen Textur zu? Alle Kurven behalten und was nicht ...
(Ich bin auch offen für verschiedene Ideen / Antworten, wie man die gegebene Textur animiert. Hier geht es nicht um Realismus, sondern nur um ein paar gut aussehende Bewegungen, die wie Wasser aussehen ...)
Lösung von DMGregory
Ich habe in diesem Beitrag ein libgdx-Beispiel gepostet: 2D-Wasseranimation ist gezackt und nicht glatt (siehe Antwort zur Texturfilterung)