Evet, haklısın, bu 2D su efekti matematik sinüs fonksiyonu kullanılarak simüle edilebilir :
wave = sin(phase + t * frequency) * amplitude
phase
sabittir, ne istersen koy.
t
işlediğiniz piksel / tepe noktasının yatay konumuna ayarlayın :t = x;
amplitude
zaman içinde değişiklik (dalgaların yukarı ve aşağı hareket etmesini sağlayacaktır):
amplitude = sin(t * wave_speed) * wave_height
Daha göreceli bir etki elde etmek için birkaç dalga birleştirin:
wave_final = wave0 + wave1 + ...
.
Her dalga için bazı parametreleri biraz değiştirin (örneğin: faz, frekans, ...).
İşte sadece iki dalga kullanarak yaptığım hızlı bir örnek:
http://glslsandbox.com/e#4988.0 (son tarayıcı ve WebGL'nin etkinleştirilmesini gerektirir)
NOT: bu bir gölgelendiricidir, ancak bunu 2B ilkel kullanarak yapmak aynı yaklaşımdır.
DÜZENLEME: herhangi bir çerçeve veya 2d oluşturma sistemi belirtmezsiniz, ancak çokgenler / üçgen şeritler kullanılarak nasıl oluşturulacağı aşağıda açıklanmıştır: