其實之前就有想過游戲中那些波浪效果是怎么實現(xiàn)的, 剛好最近有些功夫了可以去做一個演示的小demo出來了解一下原理.
Demo效果
這里只是實現(xiàn)了基本的表現(xiàn), 對于增加紋理并是讓相鄰的長條看起來平滑, 還沒有處理, 具體實現(xiàn)可以見參考網(wǎng)址
原理
基本思想
最基本的原理其實是就是積分把水池, 分成N個長條, 每個長條都當成一個彈簧, 根據(jù)胡克定律彈簧形變越大, 彈力也就越大.
步驟
水面某一點受到力時給于對應(yīng)的長條一個向下的初始速度
根據(jù)預(yù)先設(shè)置的Spread(傳播速度)對長條的速度進行疊加
集中渲染, 刷新每個長條新的高度
代碼
https://github.com/samael65535/toy_code/blob/master/EffectLab/fluid.js
參考網(wǎng)址
http://gamedevelopment.tutsplus.com/tutorials/make-a-splash-with-2d-water-effects--gamedev-236
原文連接
http://samael65535.github.io/cocos2d-js/2016/07/06/wave-simulate-cocos2d/