Solucanlar oyunundan 2D yan dalga efektini yeniden oluşturun


Yanıtlar:


14

Evet, haklısın, bu 2D su efekti matematik sinüs fonksiyonu kullanılarak simüle edilebilir :

wave = sin(phase + t * frequency) * amplitude

resim açıklamasını buraya girin

  • phase sabittir, ne istersen koy.
  • tişlediğiniz piksel / tepe noktasının yatay konumuna ayarlayın :t = x;
  • amplitudezaman 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:

resim açıklamasını buraya girin


Vay, bu harika bir cevap, çok kapsamlı cevap için teşekkürler. Evet, renderleme için HTML5 Canvas api kullanıyorum. Bunun için tekrar teşekkürler, son derece yararlı !!
— Ciarán

Doğru, Worms dalgalar açıkça olsa değil sadece Sinüs ve ancak daha karmaşık; muhtemelen sadece sinüslerin üst üste binmesi.
— leftaroundabout

1
@ leftaroundabout - Teknik olarak , her dalga fonksiyonu gerçekten sadece sonsuz sayıda sinüsün bir süperpozisyonudur. Pratik olarak, bu hala doğrudur, ancak daha kaba yaklaşımlar hayatınızı kolaylaştırabilir.
— Sahte Ad
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.