私は現在、海のトップダウンビューでゲームを実装しています。次の、少し抽象的なテクスチャを使用します。
実際のテクスチャは透明ですが、わかりやすくするために緑色のような色を追加しました。
私が今抱えている問題は、このテクスチャをアニメーション化する方法がわからないため、水がきれいに見えることです。私はサイン波でテクスチャを動かそうとしました: texture.y += sin(angle)
。もちろん、今ではテクスチャ全体が動いており、非現実的に見えます。次に試したのは、別のレイヤーを追加して視差効果を実装することです。そのため、水面下の反射も移動しますが、はるかに遅くなります。見た目は少し良くなっていますが、それでもまだ...いい感じです。
個々のセルが拡大したり収縮したりする場合、ウェブや布のように見えるのが最高のアニメーションだと思います。誰かがこれらのセルの1つの頂点をわずかに引っ張り、隣接するセルが拡大し、私が引き寄せる(またはプッシュする)セルが収縮すると想像してください。一種のウェブのようなもの(?)。しかし、私はこのようなものを実装する方法がわかりません:
- これの数学モデルは何ですか?バネのあるもの、どこで力が押したり引いたりしますか?
- もしそうなら、このモデルを指定されたテクスチャにどのようにマップしますか?すべての曲線を保持し、そうではない...
(また、与えられたテクスチャをアニメーション化する方法について、さまざまなアイデア/回答を受け入れています。リアリズムはここでのポイントではなく、動きのような見た目の良い水です...)
DMGregoryのソリューション
この投稿にlibgdxの例を投稿しました:2D水アニメーションはギザギザで滑らかではありません(テクスチャフィルタリングに関する回答を参照)