最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

從零開始獨立游戲開發(fā)學習筆記(二十七)Unity學習筆記(十三)M_Studio 3DRPG教程1

2022-04-14 22:21 作者:oyishyi  | 我要投稿

直接下一個教程走起。雖然是 3D 的,不過大多數(shù)方法是通用的。(除了現(xiàn)在這篇)

1. 新建項目,導入素材

這個就不多說了。我是直接新建 urp 項目的,因此不需要手動創(chuàng)建 pipeline。

1.1 素材升級

有些素材打開后是紫色的,說明素材本身沒有升級到 URP。

1.1.1 自帶升級包

像是教程里所用的 simpleNaturePack 里附帶了升級包,直接點 URP 的升級包,重新導入一下即可。

1.1.2 沒有自帶升級包

參考這個文檔。

  1. 但是像是 dog knight 這種素材并沒有自帶升級包。因此我們要手動升級。

  2. 面板里選擇 Edit-> Rendering -> Render Pipeline Converter。(2020 之后的版本)

  3. 然后換成 Built-in to URP,把下面全部勾選。(每個勾選就是問你要不要把這一類型轉化為 urp,我們肯定是要把所有類型都轉化為 urp 的)。然后先點左邊的 initialize converters,再點右邊的 convert assets。

其實第二種完全可以代替第一種,第一種只是當你只有一兩個 package 需要升級的時候比較方便罷了。有多個 package 的時候,就算每個包都提供升級包,一個一個導入也麻煩。

2. 簡單關卡創(chuàng)建

先熟悉一下一些工具。像是上方的 skybox,取消勾選可以讓丑不拉幾的天空盒子去掉(game里還有,只是 scene 界面看不到了)

這里我們?nèi)?asset store 里下載一個好看的 skybox。

2.1 skybox 更換

首先打開 window->rendering->lighting 面板,選擇 environment tab。就可以看到 skybox 屬性了。 選取 skybox 可以在 inspector 里調整一下屬性。

2.2 影子

先導入一塊地面(小技巧,拖入 hierarchy 的話 position 默認為 0,有時候這比直接拖入到場景中好調整一些),然后可以發(fā)現(xiàn)此時已經(jīng)有影子了,但是這個影子并不好看。

這是我們就需要去設置 URP 了,URP 設置在創(chuàng)建項目的時候已經(jīng)自動生成,可以看到很多個設置文件。每一個 quality 等級包含兩個文件。我們找到當前項目的等級的文件:

可以找到 shadow 模塊:

2.2.1 max distance

max distance 是指什么距離下渲染陰影,如果離的超過這個距離,陰影就不會渲染。

2.2.2 cascade count

雖然上面說是這樣,但你會發(fā)現(xiàn),調節(jié)這個 max distance,怎么陰影的質量也改變了,因為下面還有一個 cascade count,這個意味著分層級渲染。剛剛調整 max distance 之所以會影響陰影質量,是因為下面的這些層級的閾值改變了。max distance 本身的含義并沒有問題。


看上圖可以看到,此時有 4 個層級,距離角色 10.05 m 以內(nèi)的話,按照第一層級,也就是最清晰的影子來渲染。往后越來越模糊。

2.3.3 normal bias

normal bias 有自己的說法和定義,不過基本是和陰影效果相關的(一般是陰影中出現(xiàn)光點),甚至 unity 手冊直接推薦我們自己拖拽,根據(jù)眼睛看到的情況來修改。

2.3 lighting

打開剛剛打開過的 lighting 面板,選擇 scene tab。new 一個新的 lighting setting,起個名保存起來。

下面是一些通常設置:

  1. lighting mode 一般來說使用的是 baked indirect。

  2. lightmapper 一般設置為 gpu,以節(jié)省 cpu 開銷。

  3. 整個面板最下方右下角有一個 auto generate 勾選項和一個 genrerate lighting 按鈕。一般來說不要勾選 auto generate 因為每次修改場景都會重新生成比較浪費時間。當然雙刃劍帶來的好處就是不用每次修改滿意后又要來這里手動點擊 generate lighting 按鈕了。除非場景非常簡陋,機器非常牛逼,一般不要開這個。

  4. 去 environment tab 可以看到環(huán)境光源是 skybox,因此剛才 generate lighting 后場景的顏色會和 skybox 比較匹配。想要自己設置也可以把 skybox 換成 color 或者 gradient 來自定義顏色。

2.4 asset 放置

資源放置的時候,經(jīng)常遇到要對齊。比如說這棵樹的底部怎樣和地面對齊。手動調整肯定是爆炸。可以按住 v 鍵,選擇 asset 要對齊的頂點,然后拖拽,就可以看到這個頂點會和場景上的頂點嘗試對齊了。

2.5 快速設置攝像頭位置(以及其他所有物體)

有時候想調整攝像頭位置,但是通過物體操作工具以及 game 里的 preview 來確認視角是不是調對了很麻煩。有沒有一種可能,先在 scene 里調整好角度(鼠標調整比換各種工具調物體容易多了),然后把攝像頭的位置移過來,這樣就很方便了。

當然是有的,調整好角度后,選取想要同步的 object(這里是攝像頭),按一下 ctrl + shift + f 即可。

2. PolyBrush

之前下載的素材里只有 3 種地面,實在是有點少。一般 Unity 用 terrain 來制作地形。不過這次我們來學習如何使用 PolyBrush 來制作 low poly 風格的 terrain 的效果。

先去 package manager 里安裝下來。這個包會提供 shader 樣例,因此我們把樣例 shader 也導入進來。

可以新建一個文件夾用來裝插件相關的內(nèi)容。

可以看到上面工具欄里多了一個 tools,進去可以看到 polybrush 菜單。打開 polybrush window。

2.1 使用

可以直接看到提供了 5 個工具??疵忠泊蟾拍懿碌绞歉墒裁吹?。

  1. 第一個選中后可以看到場景中出現(xiàn)了很多頂點,拖拽就可以往上拉,按住啊 ctrl 再拖就是向下了。拖的時候會發(fā)現(xiàn)是按照頂點的法線方向來拖拽的,如果想改變方向可以調整 direaction 屬性,比如只想往上拉,可以選擇 y 軸方向。也可以選擇 mirror 來做對稱地形。

  2. 第二個是對地形進行柔化,讓地形不那么棱角分明。

  3. 可以刷上不同的顏色。不過教程中演示的并沒有效果,因為當前物體的材質并不是 polybrush 材質??梢缘絼偛?shader 那里,選中后右鍵新建 material,然后把這個 material 拖到地面上,這樣就可以使用了。

  4. 可以用來刷 prefab,這樣就不用一個一個把 prefab 拖到場景中了。先選中之后想要刷上去的所有 prefab,拖到 palette 中。然后從 palette 中選擇一些 prefab,會在 brush loadout 中出現(xiàn),這時候再到場景中刷,會發(fā)現(xiàn)這些 prefab 被隨機地刷上,也可以在 brush loadout 中拖拽那個橫線來調整出現(xiàn)概率。按住 ctrl 再按就會刪除。還可以注意到其中有一個 hit surface is ground 勾選項已經(jīng)被勾選,這樣所有刷的東西都會成為被刷物體的子項。刷完后有什么不滿意的,再一個一個地去仔細調。

  5. 和上一項類似,只是換成了 texture。

2.2. probuilder

之前的地面很小,如何變大呢?直接改變 size 并不會增加頂點的個數(shù)。因此需要一個新的 package:probuilder,和之前一樣需要先去 package management 里安裝。安裝完后導入 urp 支持。

可以自己想一下怎么使用,首先應該干什么。想好了嗎?沒錯,我們先要去 tools 里找到 probuilder,打開面板。記住這個流程。

2.2.1 使用

可以看到都是文字,可以設置成 icon 形式。按住 shift 的時候鼠標移動上去還會顯示具體詳情。

那么開始用了:

  1. 首先我們把之前的地面給毫不留情地刪掉。因為我們要制作自己的地面了。

  2. 使用第一個工具,換成 plane,畫一個大一點的地面。下面的參數(shù)可以設置頂點數(shù)量。越大越細節(jié),cost 也越高。

2.3 progrid

ProGrid 也是一個包,但是這個包現(xiàn)在并不能找到。查閱文檔可知 pre-release 和 experimental 包不會顯示在里面。前者需要在項目設置里 enable,后者則必須安裝了之后才能看到。

得到這個消息的我立刻去 project setting->package manager-> enable pre-release package 勾選。然而我們回去找的時候,依然找不到 progrid,雖然多了一些其他的 pre-release,但是 progrid 并不在其中。

于是我們大膽推測 progrid 變成了 experimental 包。因此我們?nèi)ゾW(wǎng)上搜索,發(fā)現(xiàn) progrid 需要通過 git url 來手動導入,地址為?com.unity.progrids。

安裝完成后,發(fā)現(xiàn)果然,它已經(jīng)變成了一個 experimental 包。

打開 progrid 面板,可以看到 scene 中多了很多工具。場景中也出現(xiàn)了一個大網(wǎng)格。雖然 Unity 自己也有用于對齊的網(wǎng)格,但是這個功能更多。例如左上角可以更換網(wǎng)格的坐標系。

第一個地方可以設置 snap value,也就是格子的間隙,可以用鍵盤上的 + 和 - 來快捷增加和減少。

2.4 繼續(xù)制作地面

回到 probuilder,之前我們切分好了頂點。但是會發(fā)現(xiàn)切割是以正方形切割的,并非 low-poly 的三角形。其實很簡單,probuilder 直接提供了這個功能 triangulate。選中物體點擊 triangulate 即可。

然后我們就可以再回到 polybrush 里繪制了。

2.5 材質

隨手建一個 Materials 文件夾用來存放之后的材質。里面新建一個 material 用作地面的材質,然后拖到地面上用作地面的材質。然后將其 shader 換成 polybrush 以便刷上顏色。

3. 智能導航地圖烘焙

這一節(jié)要做導航系統(tǒng):

1.1 地面烘焙

  1. 首先打開 AI -> Navigation 面板

  2. 第一個 agent tab 里可以調整人物行動的一些數(shù)據(jù)。

  3. 選中物體(剛剛建立的地面)后,切換到 object tab,可以看到一些選項是灰的,這需要我們將其 flag為 navigation static。這里可以直接勾選,但同時也可以在 inspector 里調整。選好后會發(fā)現(xiàn)有一個彈框問是否把子物體也一起 flag 掉。這里我們選否,因為我們地面的子物體是樹木,我們不想讓人走在樹木上。

4. 然后 object tab 里之前灰色的選項都可以調整了,navigation area 默認是 walkable,那我們就不用調整了。 5. 在去往 bake tab,先直接 bake 一下,然后可以看到地面變藍色了,不過在一些比較陡峭的地方則沒有變藍。這些藍色的地方就是可以行走的地方,那些沒有變藍的地方是通過上方 baked agent size 里的角度控制的。(長得很像 agent tab,但是不是一個東西)

目前的設置是超過 45 度就不能行走。一般游戲會設置成 30-45 之間。

1.2 障礙物烘焙

雖然地面可以走了,但是樹木腳下的地面所在的區(qū)域并沒有被限制,因此人還是可以走向樹木,發(fā)生穿模等各種 bug。因此我們需要對樹木也限制一下。(以及石頭等其他障礙物)

  1. 先選中所有的樹木(如果命名比較規(guī)范的話,可以在 hierarchy 搜索框中搜索樹木都含有的字符串,再全選,比較方便和準確,尤其當存在于多個父項中的時候不用逐一點開各個父項)。

  2. 用相同的方法,不過這次設置成 not wkalable。

  3. 都調整完再 bake。(bake 是對場景所有物體進行 bake,因此不用每次換個 object 是否 walkable 都要 bake 一次,全部調整完再統(tǒng)一 bake 就行)

1.3 player agent

接下來要對人物進行調整了。

  1. 我們先去人物的 inspector 窗口,因為用的是下載的,自帶了 animator,不過我們之后會制作自己的 animator,因此這里我們?nèi)∠?controller。

  2. 添加組件里選擇 Navigation 可以看到有三種組件可以選。

3. 我們先選擇 nav mesh agent,這是用來做人物導航的??梢钥吹饺宋锷砩铣霈F(xiàn)了一個圓柱體,這便是 agent 的大?。?/p>

4. 根據(jù)人物的大小調整 agent。通常高度為人物的高度,radius 一般只包住軀干部分。 5. 記得到之前 navigation 面板中的 bake tab 里,把剛剛設置的高度和 radius 填上去。bake 一下,會發(fā)現(xiàn)障礙物周圍的不可行走區(qū)域變小了,這是因為剛剛我們把 agent height 和 radius 都調小了。

1.3.1 nav mesh obstacle

嘗試拖拽一下樹木,會發(fā)現(xiàn)藍不可行走域并沒有跟著變化,還保留在原地,制作關卡的時候只需要重新 bake 一下就行了,這是因為我們設置成了 static。

不過,如果有一些障礙物可以在游玩的過程中移動,顯然這種方式并不可取。那么我們可以使用 nav mesh obstacle 組件。

  1. 隨便拖一個物體上來,不要設置成 static,這樣無法使用 navigation 面板了。

  2. 我們添加一個 nav mesh obstacle 組件,在勾選上 carve ,會發(fā)現(xiàn)不可行走域立刻發(fā)生改變,而且拖拽物體,區(qū)域也會跟著移動。如果覺得默認的 box 形狀不好可以換成 capsule。


從零開始獨立游戲開發(fā)學習筆記(二十七)Unity學習筆記(十三)M_Studio 3DRPG教程1的評論 (共 條)

分享到微博請遵守國家法律
锡林浩特市| 顺义区| 林周县| 东至县| 静乐县| 沁阳市| 金秀| 宣化县| 黄山市| 锡林郭勒盟| 兴海县| 横峰县| 富顺县| 吉林省| 承德市| 同心县| 兴业县| 宜宾市| 蒙城县| 定日县| 遂川县| 徐闻县| 台江县| 措美县| 湛江市| 银川市| 邵阳市| 宁城县| 调兵山市| 平武县| 苍南县| 新沂市| 新乐市| 星座| 永修县| 德钦县| 读书| 饶平县| 聊城市| 巧家县| 凯里市|