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.