如何在Unity中創造真實的水

来源:https://www.cnblogs.com/jieke666/archive/2019/05/09/10836231.html
-Advertisement-
Play Games

你將要創造什麼 Unity是由Unity Technologies開發的多平臺游戲引擎,用於為控制台,移動設備,電腦甚至網站等多種設備創建視頻游戲和應用程式。Unity的核心優勢在於其穩健性,可移植性和社區性; Unity針對幾個眾所周知的API,如Direct3D,OpenGL,Op​​enGL ...


你將要創造什麼

Unity是由Unity Technologies開發的多平臺游戲引擎,用於為控制台,移動設備,電腦甚至網站等多種設備創建視頻游戲和應用程式。Unity的核心優勢在於其穩健性,可移植性和社區性; Unity針對幾個眾所周知的API,如Direct3D,OpenGL,Op​​enGL ES和最近的Vulkan。

由於上述特性,Unity在AAA軟體開發公司和有抱負的游戲程式員中越來越受歡迎。

Unity支持多種技術和組件。其中一個關鍵組件是水系統。Unity的水系統允許您在應用程式或游戲中添加不同類型的水,即Water Basic,Water Pro和Water4。預設情況下,Unity包含幾個水預製件(包括必要的著色器,腳本和藝術資產)。

本教程將重點介紹Unity中水的工作原理,以及如何使用它來創建廣闊而豐富的地形環境。

先決條件
首先,確保您使用的是 最新版本的Unity ; 否則,你可能會發現教程後面和使用物理關節的細微差別。

要開始本教程,您有兩個可供選擇的路徑:

使用可用的啟動項目立即啟動它。

完成以前的Unity教程,稱為Unity Terrain工具。

無論哪種方式,我們都會為您提供幫助,但是花時間從前一個開始將為您提供有關Unity及其工具的更多見解。

水基礎
我假設你要麼使用當前的Starting Project開始,要麼已經完成了之前的 Unity Terrain工具 教程。如果不是這樣,您可以啟動一個新項目,但必須導入環境資產包並創建自己的地形。如果您使用的是新項目,請轉到主菜單“ 資產”>“導入包”,然後選擇“ 環境”。

從現在開始,本教程將重點介紹當前的Starting Project。通過分析地形,您可以看到,在中心,地面更深一些。該區域專門為您創建了一個湖泊。一種方法是使用Water Basic預製件。

在“ 項目”選項卡中,打開“ 資源”文件夾,然後打開“ 環境”。在這裡你會發現兩個水文件夾:水和水(基本)。最初,您將使用Water(Basic)。 打開它,然後打開Prefabs文件夾。有兩種預製件可供選擇:WaterBasicDaytime和WaterBasicNightime。

在繼續之前,這裡是對預製件的快速解釋。預製件充當游戲對象的模板。它允許您在場景中創建新的對象實例,並且對預製資產所做的任何編輯都會立即反映在從其生成的所有實例中。 

但是,您也可以單獨覆蓋每個實例的組件和設置。如果您需要在場景或多個場景中擁有多個相同類型的對象,這將非常有用。通過使用預製件,您無需從頭開始創建每個對象,如果要對其進行調整,它將自動更新所有實例。

正如您可能已經猜到的那樣,如果您在白天有場景,則應使用WaterBasicDaytime,併在夜間場景中使用WaterBasicNightime。它們都以完全相同的方式工作,但第二個設置為更暗。

在這個項目中你有一個白天場景,所以你將使用WaterBasicDaytime預製。使用滑鼠選擇預製件,然後將其拖動到場景中(或多或少地插入地面的孔中,類似於下圖)。這會將WaterBasicDaytime添加到場景中。

接下來,選擇水並調整其位置和比例。

當您根據需要定位和配置水時,讓我們快速瞭解您可以使用它做什麼。如果選擇它並轉到“ 檢查器”選項卡,您將看到幾個組件:剛剛使用的變換組件,水基本平面(網格過濾器),設置水的材質的網格渲染器,水基本腳本和著色器。

在網格渲染器中,您可以更改與陰影生成相關的一些選項,如“ 投射陰影”或“ 接收陰影”。您還可以修改與反射相關的多個屬性。將“ 投射陰影” 和“ 接收陰影”設置 為“ 開”。接下來,對於 Reflection Probes,我們將其設置為Blend Probes和Skybox。

WaterBasicDaytime Shader允許您設置水的一些參數,如Wave scale和Wave speed。您可以使用這些值來查看某些圖形更改,但現在保留預設值。

現在,為了查看最終結果,請將相機放在合適的位置。為此,請移至“ 場景”視圖,併在獲得所需視圖後,選擇“ 主攝像機”游戲對象。現在轉到菜單GameObject,然後選擇Align With View。這會將相機放在您想要的位置。按播放。

從這裡,您可以返回並更改預製屬性以查看屬性之間的差異。使用Cast Shadows,Wave scale和Wave speed來感知修改。

Water Pro
下一步是學習如何使用Water Pro創建和配置湖泊。在繼續之前,從場景中刪除WaterBasicDaytime游戲對象。

接下來,在“ 項目”選項卡中,打開“ 標準資源”文件夾並再次打開“ 環境”。這一次,打開Water文件夾。你有兩個文件夾:水和水4。要使用Water Pro,您必須打開Water文件夾。接下來,打開Prefabs文件夾。

就像Water Basic一樣,文件夾中有兩個預製件:WaterProDaytime 和WaterProNightime。它們都以完全相同的方式工作,並且前面提到的WaterProDaytime設置為白天場景,而WaterProNightime設置為較暗的環境。

由於您有白天場景,因此您應該選擇WaterProDaytime。選擇預製件並將其拖動到場景中。再次,選擇WaterProDaytime游戲對象並調整其位置和比例。

一旦湖面尺寸合適,您就會立即看到水的圖形質量與Water Basic相比有所不同。

當您有水時,請快速查看您可以用它做什麼。如果選擇它然後查看“ 檢查器”選項卡,您將看到幾個組件:變換組件,水平面網格,網格渲染器,水(腳本)和著色器。

 

該網格渲染 性能類似於以前的一個。將“ 投射陰影” 和“ 接收陰影”都設置 為“ 開”。接下來,將Reflection Probes 更改為Blend Probes和Skybox。

水腳本 提供了可以修改的其他屬性。這些屬性不適用於以前的水類型。

您可以將水模式設置為簡單,這將使水像基本水一樣工作,反射,這將使水具有反射但沒有折射,或折射,允許反射和折射。您可以禁用像素燈,這將降低反射/折射中的照明質量,以提高性能。 

您可以設置紋理大小,它指的是生成的水紋理的解析度。“ 剪裁平面偏移”值是反射或折射圖像出現的水下方距離。您可以設置受影響的反射圖層以及折射圖層。這些是圖層蒙版,用於控制哪些場景對象在水中可見。預設情況下,選擇所有圖層。

在著色器組件中,您可以更改波形比例,並更改反射和折射扭曲的值。這些將根據它們對反射或折射物體的影響來確定漣漪的表觀高度。

更多unity2018的功能介紹請到paws3d爪爪學院查找。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一,複習 二,random模塊: 三,json模塊: 四,pickle模塊: 五,shelve 模塊: 六,hashlib加密模塊: 七,hmac 加密模塊: 八,shutil 模塊: ...
  • this: 1、使用在類中,可以用來修飾屬性、方法、構造器 2、表示當前對象或者是當前正在創建的對象 3、當形參與成員變數重名時,如果在方法內部需要使用成員變數,必須添加 this 來表明該變數時類成員 4、在任意方法內,如果使用當前類的成員變數或者成員方法可以在其前面添加 this ,增強程式的閱 ...
  • 工作快一年了,一直沒有停下學習的腳步,但是發現自己學的東西太雜太亂也太容易忘記(從小學到大學一直沒有記筆記的習慣),總是反反覆復,所以在此進行總結,也記錄下自己的學習的歷程,從此做一個有內涵的程式猿。。。 ...
  • pip: 一個現代的,通用的 Python 包管理工具。提供了對Python 包的查找、下載、安裝、卸載的功能。 windows:自帶pip,直接使用。 Linux:執行下麵命令即可完成安裝。 Usage: pip <command> [options] 查看版本:pip show package_ ...
  • 1.介面定義 介面屬於一個特殊的類,這個類裡面只能有抽象方法和全局常量 (該概念在JDK1.8之後被打破,在1.8後介面中還可以定義普通方法和靜態方法,在後續章節會詳講) 1.1 介面具有以下幾個原則 介面通過interface關鍵字來實現定義 一個子類如果要繼承介面的話,則需要通過implemen ...
  • 本次內容是基於獨立的“企業微信”而言的; 企業微信有獨立的管理後臺,和一般的服務號,訂閱號後臺不同; 企業微信涉及員工,所以這裡的支付是付款到員工零錢; 官方API文檔: https://work.weixin.qq.com/api/doc#90000/90135/90278 下麵具體步驟: 1:先 ...
  • CodeFirst的開發模式,資料庫的設計細節完全靠代碼來完成,數據實體映射配置正是負責這項工作的,針對一個實體,可以在這裡配置其在資料庫中的數據表關係、數據約束及各個數據欄位的每一個細節配置 ...
  • 作為上床後需要下床檢查好幾次門關了沒有的資深強迫症患者,有一個及其搞我的問題,就是dll問題。 曾幾何時,在沒有nuget的年代,當有依賴項需要引用的時候,只能通過文件引用來管理引用問題,版本問題,更新問題層出不窮,很是難受。 後來出來nuget,喜大普奔,總算解決了引用的問題。開心之餘,依然還有一 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...