Unity 液體物理

2021-08-09 16:23:19 字數 2061 閱讀 4061

翻譯自:

在這個教程中我會展示如何擴充套件你自己的水粒子(water particle),以使流體物理能在很多機器上執行(當然也包括手機)。

效果不是很現實,不過我可以保證這很簡單而且可能是最省效能的方式。如果你知道如何如何在unity中編碼以及使用剛體碰撞,你將用他們做一些瘋狂的實驗。

在開始這個教程之前,希望你具備如下條件:

ok, 如果你已經做過相關功課,那你應該大致了解metaball是如何運作的,如果還沒有的話,那麼這裡有不錯的教程你可以了解一下。

這裡稍微講一下,metabll是3d空間中的等值面。想象空間中有兩個電子,會形成乙個磁場,類似如下:

上的亮度代表了磁場的強度。這種效果類似水滴的融合或者細胞的**,所以我們在遊戲裡可以用meataball來模擬水滴(運用這個技術就可以實現《小鱷魚愛洗澡》中的流體效果了)。

那麼metaball中的shader是怎麼起作用的呢,那麼請看這段shader**

這段**中的最後一句是

color=floor(color/0.1)*0.5;

這句是metaball效果的精髓所在。

}完整的shader**在project中。

不知道你注意到沒有,我使用一張紋理而不是計算每個畫素來表示乙個水滴,這是空間換時間點方法,直接從上讀取效率更高(畢竟ps能輕鬆完成這件事)。那麼讓我們建立一張類似水滴的並將這張紋理應用進去。

接下去用我們剛才的shader建立乙個材質

結果看起來應該如下:

為了模擬水滴,我們需要為我們的水滴新增碰撞體,3d中新增sphere collider,這個碰撞體要比中的畫素輪廓小一點,這樣我們就能模擬水滴融合但又不完全重疊的效果了

render texutre 表現得和普通紋理差不多,所以我們可以用shader做用於它。當我們將metaball shader用於這個render texture的時候, 如果攝像機看到的白色的東西,它將會如我們實驗中一樣merge這些顏色。

那麼建立一張render texture吧。

複製乙個攝像機,將輸出定向到建立的render texture(culling mask只設定liquids):

我們在場景中新增一些水滴, 執行遊戲,你將會看到:

從上面的右邊部分可以看到,水滴已經有類似磁場線的分割了。那麼這個水滴融合效果算是成功了。

fullproject

first release, basic water

second release, color merging

Unity遊戲開發 Unity物理引擎

詳細講解unity的物理引擎系統以及物理元件的應用及注意事項。學習剛體rigidbody和碰撞體collider元件的工作方式和應用場景。我們設計了非常高效的教學路徑,讓你快速入門unity物理元件的設定方式及操作流程。同時我們也對所有物理元件進行了非常詳細的講解及實操演示。帶你全面深度了解rigi...

Unity物理該怎麼學

我們這裡就舉兩個最常見的案例 collider和trigger。來幫助大家掌握學習unity物理的方法 collider碰撞體的基礎應用 collider的組合方式及注意事項 collider的工作方式及重點注意事項 trigger觸發器的基本應用 trigger觸發器的工作方式及注意事項 觸發器和...

Unity基礎(五) 物理引擎

物理引擎 模擬真實世界中物體物理特性的引擎 二 使用步驟 總結使物體具有物理屬性 需要加碰撞器的物體 一般是場景中靜止不動的物體 需要加剛體的遊戲物體 需要加is kinematic的遊戲物體 一般是需要進行物理碰撞或者物理檢測又不想產生物理效果的遊戲物體 如下 示例 如下 示例 data pd.r...