В настоящее время я реализую игру с видом сверху на океан. Я использую следующую небольшую абстрактную текстуру:
Фактическая текстура прозрачна, я добавил зеленый цвет для ясности.
Теперь у меня проблема в том, что я не знаю, как анимировать эту текстуру, чтобы вода выглядела хорошо. Я попытался переместить текстуру синусоидальной волной: texture.y += sin(angle)
. Конечно, теперь вся текстура движется, что выглядит нереально. Следующее, что я попробовал, это добавить еще один слой и реализовать эффект параллакса. Так что отражения под поверхностью воды также будут двигаться, но намного медленнее. Это выглядит немного лучше, но все еще не ... достаточно хорошо.
Я думаю, что лучше всего будет выглядеть анимация, если отдельные ячейки будут расширяться и сжиматься, как сеть или кусок ткани. Представьте, что кто-то слегка потянет за одну вершину этих ячеек, и соседняя ячейка расширится, и ячейка, к которой я стремлюсь (или подтолкну), сократится. Вроде как паутина пружин (?). Но я понятия не имею, как реализовать что-то вроде этого:
- Какая математическая модель для этого? Что-то с пружинами, где силы толкать / тянуть?
- И если да, то как мне сопоставить эту модель с заданной текстурой? Сохраняя все кривые, а что нет ...
(Я также открыт для различных идей / ответов о том, как оживить данную текстуру. Реализм здесь не главное, просто приятные на вид воды, похожие на движения ...)
Решение от DMGregory
В этом посте я опубликовал пример libgdx: 2d анимация воды неровная и не плавная (см. Ответ о фильтрации текстур)